Javascript 附加多个JS点击处理程序会降低页面速度吗?

Javascript 附加多个JS点击处理程序会降低页面速度吗?,javascript,javascript-events,jquery,Javascript,Javascript Events,Jquery,我可能有200个点击处理程序,我必须附加在一个页面上。(我无法委派它们,因为它们与需要位于单个元素上的jquery插件关联) 我想知道附加这么多点击处理程序是否会降低性能 我知道mouseover/scroll处理程序可能会被触发很多次,并且会降低页面速度,但是单击处理程序的触发频率较低。但是,仅仅让他们“听”会减慢页面速度吗?不,不会 您是对的,mouseover处理程序可能会被大量解雇,但将侦听器附加到事件这一简单事实并不会降低页面的速度 但是,如果在一个事件上有200个侦听器(这是非常不可

我可能有200个点击处理程序,我必须附加在一个页面上。(我无法委派它们,因为它们与需要位于单个元素上的jquery插件关联)

我想知道附加这么多点击处理程序是否会降低性能

我知道mouseover/scroll处理程序可能会被触发很多次,并且会降低页面速度,但是单击处理程序的触发频率较低。但是,仅仅让他们“听”会减慢页面速度吗?

不,不会

您是对的,mouseover处理程序可能会被大量解雇,但将侦听器附加到事件这一简单事实并不会降低页面的速度


但是,如果在一个事件上有200个侦听器(这是非常不可能的),则在触发事件时可能会减慢速度。同样,我认为情况并非如此。

当然,事件处理程序并不是完全免费的,但是它们非常便宜。问题是与处理程序关联的事件做什么。通常,元素、动画等的渲染会对浏览器的性能造成更大的损失


此外,事件侦听器的实现方式也有所不同。例如,请参见此

如果您有200个单击处理程序分别连接到不同的对象,那么唯一会让您慢一点的地方就是连接200个事件处理程序。附加后,无论是200个单独对象上有200个事件处理程序,还是1个对象上有1个事件处理程序,单个单击都不会有什么不同

如果在同一个对象上有200个单击处理程序,那么当在该对象上处理单击时,您可能会看到速度减慢,因为它必须进行200个函数调用才能执行所有200个事件处理程序


因此,只要它们都在不同的对象上,唯一的减速就是最初附加事件处理程序。一旦它们被连接,就不会对性能产生影响。

听起来可能值得重新考虑jQuery插件以利用事件委派。@riley-OP说他们“无法委派”,这意味着他们不能使用您在这个特定实例中提到的技术。这通常是一种有效的技术,这里的OP只是要求授权以外的东西。上一次我测试这一点时——诚然是大约8年前——许多事件处理程序绝对影响了IE上页面的呈现。尤其是滚动,是垃圾。不过,情况可能有所改善。这种联系似乎已经中断。