【发布时间】:2010-10-15 22:32:36
【问题描述】:
阅读另一个关于 jQuery 性能的 Stack Overflow 问题后,我开始思考何时值得使用事件委托而不是单独绑定到元素。我主要考虑 jQuery,但我想它可能适用于一般的 Javascript。
事件委托有两个主要目的:
- 允许处理程序处理尚未创建/插入到 DOM 中的元素。
- 将一个函数绑定到一个共同的祖先元素而不是多个同级元素
我的问题是关于第二个问题。一般的答案可能是“这取决于具体情况”,但我想知道是否有经验法则或基准测试方法来测试这一点。
所以,问题是:在事件委托的性能优势超过性能成本之前,您需要多少元素?
【问题讨论】:
-
我不知道事件委托的性能成本...它们是什么?事件无论如何都会冒泡,并且事件目标始终存储在事件对象的相应属性中。
-
@Sime 我想到的主要是每次触发事件时,必须运行委托调用中的选择器以检查它是否与事件目标匹配。可能还有其他人...
-
请考虑,当您使用委托时,您实际上是在页面生命周期内分散了绑定处理程序的成本。当您首先通过查找元素进行绑定时,您会在页面加载时添加更多工作,此时用户对延迟最为敏感。
-
你能贴出代码吗?我认为你有它倒退。
-
@vittore
$('#el').delegate('a[href^=http://www.google.com]', 'click', func)选择器a[href^=http://www.google.com]将针对到达#el的每个点击事件的目标运行,我相信。
标签: javascript jquery performance jquery-events event-delegation