也许这是一个太基本的问题,但是jQuery 1.7+和1.8+中的.on()事件绑定有什么区别?我的问题如下:
我正在使用ASP MVC 3和jQuery Mobile 1.2 RC1动态创建一个列表,并将单击事件绑定到li元素。如果我使用 jQuery 1.7+,一切正常,但是当我使用 1.8+ 时,单击事件仅在第一个 li 元素上触发。我已经检查了jQuery的文档,但实际上应该没有区别,或者?
<ul data-role="listview" id="immo_list" data-inset="true"
data-theme="c" data-dividertheme="b" data-filter="true">
<%
foreach (var immobilie in Model.immoObjekte)
{
%>
<li id="immos" val="<%: immobilie.id %>"> <a href="">
<%: immobilie.strasse %> <%:immobilie.hausnummer%></a>
<span class="ui-li-count"><%:immobilie.id%></span>
</li>
<%
}
%>
</ul>
$('#immo_list').on('click', '#immos', function () {
$.mobile.loading('show');
var immoid = $(this).attr('val');
var days = $("#interval").val();
sessionStorage.setItem("clicked", "false");
sessionStorage.setItem("mode", "");
sessionStorage.setItem("days", days);
sessionStorage.setItem("immoid", immoid);
getAndShowPflichten(immoid, days);
});
感谢您的帮助!
不能有多个具有相同 ID 的元素,它必须是唯一的。改为#immos
类。
jquery 1.8包含新版本的Sizzle,他们的选择器引擎。正如您所说,它在 1.7 中有效,我想新版本在这个意义上更严格。出于性能原因,Sizzle将在找到元素后立即停止拖网文档#immos
,因为它希望它是唯一的。
您正在定义几个具有相同 ID 'immos' 的元素。HTML 文档中的每个元素都必须具有显式 ID。请改用类,并使用类选择器。例如:
<li class="immos" ...
和 JQuery 选择器:
$('#immo_list').on('click', '.immos', ...