我有一个包含大量列表元素的网页(接近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.
})
非常感谢对此的任何见解。谢谢!
答案 0 :(得分:5)
我还以为使用jquery委托会解决这个问题, 因为事件处理程序将存在于父容器中,而不是 每个列表元素一个。
绝对。或者做the "new" way:
$("#somecontainer").on("click", "li", function () {
//do processing for click here.
});