.on() jQuery 1.7 和 1.8 的区别
Posted
技术标签:
【中文标题】.on() jQuery 1.7 和 1.8 的区别【英文标题】:Difference for .on() jQuery 1.7 and 1.8 【发布时间】:2012-09-09 13:27:35 【问题描述】:也许这是一个太基本的问题,但是 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);
);
感谢您的帮助!
【问题讨论】:
先验证html? - validator.w3.org 【参考方案1】:您不能拥有多个具有相同 ID 的元素,它必须是唯一的。将#immos
改为一个类。
jquery 1.8 包含一个新版本的 Sizzle,他们的选择器引擎。正如你所说的它在 1.7 中工作,我猜新版本在这个意义上更严格。出于性能原因,Sizzle 将在找到 #immos
后立即停止搜索该元素的文档,因为它希望它是唯一的。
【讨论】:
【参考方案2】:您正在定义多个具有相同 ID 'immos' 的元素。 HTML 文档中的每个元素都必须有一个明确的 ID。改用类,并使用类选择器。例如:
<li class="immos" ...
和 JQuery 选择器:
$('#immo_list').on('click', '.immos', ...
【讨论】:
以上是关于.on() jQuery 1.7 和 1.8 的区别的主要内容,如果未能解决你的问题,请参考以下文章