附加过多事件处理程序时IE8内存泄漏/性能问题

时间:2012-01-19 20:37:28

标签: javascript jquery performance internet-explorer

我有一个包含大量列表元素的网页(接近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委托可以解决这个问题,因为事件处理程序将存在于父容器中,而不是每个列表元素都存在。类似于以下内容 -

$("#somecontainer").delegate('li', 'click', function () {
    //do processing for click here. 
})

非常感谢对此的任何见解。谢谢!

1 个答案:

答案 0 :(得分:5)

  

我还以为使用jquery委托会解决这个问题,   因为事件处理程序将存在于父容器中,而不是   每个列表元素一个。

绝对。或者做the "new" way

$("#somecontainer").on("click", "li", function () {
    //do processing for click here. 
});