【发布时间】:2015-09-04 12:02:43
【问题描述】:
我在我的 JavaScript 代码中使用了委托事件处理程序 (jQuery),所以当点击动态添加的按钮时会发生一些事情。
我想知道这是否存在性能缺陷?
// Delegated event handler
$(document).on('click', '#dynamicallyAddedButton', function(){
console.log("Hello");
});
在性能方面与此相比如何?
// Regular event handler
$("#regularButton").on('click', function(){
console.log("Hello Again");
});
查看jQuery documentation,似乎事件总是在 DOM 树上冒泡。这是否意味着元素嵌套得越深,事件发生的时间就越长?
编辑:Is there a performance benefit to using JavaScript's event delegation rather than jQuery's? 正在问一个类似的问题,那里的答案很有用。我想知道使用常规事件处理程序和委托事件处理程序之间有什么区别。链接的问题看起来好像事件在不断地冒泡 DOM 树。使用委托事件处理程序,事件是否会冒泡到顶部,然后返回到指定元素?
【问题讨论】:
-
可以,但除非您有数百个委托事件处理程序和极其复杂的标记,否则不会以任何明显的方式出现。
-
@CBroe:我认为这不是一个好的复制品。他在询问 jQuery 的系统,它的开销比典型的、有针对性的事件委托要大得多。
-
好吧,然后我提到的最后一个,stackoverflow.com/q/24964448/1427878
-
有点像,但是这个是在询问 jQuery 委托与 jQuery 直接绑定的比较。那就是将 jQuery 与没有 jQuery 进行比较。答案将涉及类似的信息。我猜是判决电话。
标签: javascript jquery performance dom