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

标签 javascript jquery performance internet-explorer

我有一个包含很多列表元素(接近 3000)的网页。我为这些附加了一个点击事件处理程序和一个悬停事件(使用 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. 
})

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

最佳答案

I was also thinking that using jquery delegate would solve this issue, since the event handlers would live in the parent container, and not one for each list element.

当然。还是做吧the "new" way :

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

关于javascript - 附加太多事件处理程序时的 IE8 内存泄漏/性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932914/

相关文章:

javascript - 对名为 "callback"的 getJSON GET 参数感到困惑

javascript - 我应该为内存性能静态分配 Javascript 字符串吗?

android - Android 调试到底是如何工作的以及为什么我的应用程序在调试时表现不同?

javascript - 使用 bassistance 插件显示表单上方的所有错误

javascript - 如何统计ajax成功的数据?

javascript - 使用 JQuery 从 HTML5 slider 中检索值

javascript - 迭代所有 DOM 元素的最有效方法

javascript - JQuery 事件选择器

javascript - Jam vs Bower,有什么区别?

javascript - 如何访问函数中的命名参数?