也许这是一个非常基本的问题,但jQuery 1.7+和1.8+中的.on()事件绑定有什么区别?我的问题如下:
我使用ASP MVC 3和jQuery Mobile 1.2 RC1动态创建列表,并将click事件绑定到li元素。如果我使用jQuery 1.7+一切正常,但是当我使用1.8+时,click事件只会在第一个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);
});
感谢您的帮助!
答案 0 :(得分:3)
您正在定义具有相同ID“immos”的多个元素。 HTML文档中的每个元素都必须具有显式ID。请改用类,并使用类选择器。 E.g:
<li class="immos" ...
和JQuery选择器:
$('#immo_list').on('click', '.immos', ...
答案 1 :(得分:3)
您不能拥有多个具有相同ID的元素,它必须是唯一的。改为使#immos
成为一个班级。
jquery 1.8包含一个新版本的Sizzle,它们的选择引擎。正如你所说它在1.7中工作,我想新版本在这个意义上更严格。出于性能原因,Sizzle会在找到#immos
时立即停止搜索该元素的文档,因为它期望它是唯一的。