我可能需要在页面上附加200个点击处理程序。 (我无法委托他们,因为他们与需要在单个元素上的jquery插件相关联)
我想知道如果连接这么多点击处理程序会降低性能吗?
我知道鼠标悬停/滚动处理程序可能会被多次触发并且可能会降低页面速度 - 但是点击处理程序的触发次数会减少。但只是让他们“倾听”会让网页变慢吗?
答案 0 :(得分:3)
不,不。
你是对的,鼠标悬停处理程序可能会被解雇很多,但是将监听器附加到事件的简单事实不会减慢页面。
但是,如果您在一个事件上有200个侦听器(这是非常不可能的话),那么在触发事件时可能会降低您的速度。再说一次,我认为情况并非如此。
答案 1 :(得分:3)
如果你有200个点击处理程序,每个点击处理程序都附加到一个不同的对象,那么这将使你慢下来的唯一地方是附加200个事件处理程序。一旦它们被附加,单个点击将在200个单独的对象上有200个事件处理程序或在1个对象上有1个事件处理程序时没有什么不同。
如果你在同一个对象上有200个点击处理程序,那么当在该对象上处理点击时你会看到一个减速因为它必须进行200个函数调用来执行所有200个事件处理程序。
因此,只要它们都在不同的对象上,唯一的减速就是最初附加事件处理程序。一旦连接,就不会对性能产生影响。
答案 2 :(得分:1)
此外,实现事件侦听器的方式也有所不同。例如,请参阅此post