我有一个包含200个div的列表,
<div id="sId_1" class="sDiv"></div>
<div id="sId_2" class="sDiv"></div>
....
<div id="sId_200" class="sDiv"></div>.
以下哪两项更快?
-- each loop -- with i++;
<div onclick="callSomeFunction('click');" id="sId_'+i+'" ></div>
-- each loop --
-- each loop -- with i++;
$('#sId_'+i+'').click( function (event) ....
-- each loop --
$('.sDiv').click( function (event) ......
这是第一个解决方案吗?因为jQuery在每个div的$ .cache中创建一个对象。
PS:是一个有超过1000个条目的对象是JavaScript的问题吗?
答案 0 :(得分:4)
您可以使用事件委派将单个“智能”事件处理程序附加到合适的父容器:
$("#parent").delegate("div[id^='sId']", "click", function() {
// do something
});
上述方法的优点:
.delegate
调用可链接。document
元素,就像.live
一样。参考:
答案 1 :(得分:1)
第一个是最快的,但它会花费你的尺寸页面。
第二个需要修复,因为你不会这样做100个div。
所以你可以让每个div成为一个你可以这样调用的类:
$(".divPRessable").click( ...
如果你要将div注入DOM(最慢),最后只会更快。