数百个DOM元素的JavaScript事件监听器性能

Ric*_*ney 7 javascript performance jquery

我有一个<ul>有很多孩子(接近3000项),其中一些<li>有很多级别.我在'click'上附加了一个事件监听器(我正在使用jQuery),我用它来切换一个孩子的可见性<li>.

我想知道如此多的事件监听器会影响性能.(至少有1000个!).这对性能来说是个大问题吗?

对于较新的网络浏览器,我并没有真正看到很多性能问题,但IE8看起来非常慢.在所有事情上敲打一个事件听众是不是不负责任?

kri*_*ath 9

答案是一个很大的百日咳YES.是的,它会影响性能.事件委托是为这件事而建的.而不是将处理程序绑定到每个处理程序li,而是将其绑定到其父级,即ul.这样ul会将click事件委托给li.

$("ul").on("click", "li", function () {
 //your code
});
Run Code Online (Sandbox Code Playgroud)

  • 如果你能用数字来支持这一点会更有帮助。说它“影响性能”根本没有帮助。当然会影响性能。问题是多少钱 (4认同)