我的网页上有很多列表元素(接近3000个)。我要为它们附加一个click事件处理程序以及一个悬停事件(使用jquery)。
$('li').click(function (e){
// do processing here
})
$('li').hover(function (e){
// do processing here for hover in
}, function (e) {
// do processing here hover out
})
在IE8上,我开始注意到一些速度下降,最初的猜测是事件处理程序的数量导致了内存泄漏/消耗问题。在Chrome,FF和IE9中效果很好。
还有其他人注意到这种行为吗?
我还认为使用jquery委托(delegate)可以解决此问题,因为事件处理程序将位于父容器中,而不是每个列表元素使用一个。类似于以下内容的东西-
$("#somecontainer").delegate('li', 'click', function () {
//do processing for click here.
})
非常感谢对此有任何见识。谢谢!
最佳答案
绝对。或者做the "new" way:
$("#somecontainer").on("click", "li", function () {
//do processing for click here.
});