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

Gun*_*ife 3 javascript performance jquery 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 
}) 
Run Code Online (Sandbox Code Playgroud)

在IE8上,我开始注意到一些减速,我最初的猜测是事件处理程序的数量导致内存泄漏/消耗问题.这适用于Chrome,FF,IE9.

有没有人注意到这种行为?

我还在考虑使用jquery委托可以解决这个问题,因为事件处理程序将存在于父容器中,而不是每个列表元素都存在.像以下一样 -

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

我们非常感谢您对此的任何见解.谢谢!

kar*_*m79 5

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

绝对.或者以"新"的方式做到:

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