我的网页上有很多列表元素(接近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.
});

09-25 16:57
查看更多