javascript - 对于JavaScript事件,冒泡比捕获好吗?

标签 javascript performance events jquery-events event-bubbling

在 jQuery 中,事件处理程序的默认时间是冒泡时间。有什么优势吗?

capture 不是比 bubble 快吗?

最佳答案

is bubble better than capture?

没有。它也没有更糟。只是不同。

Isn't capture faster than bubble?

取决于您对“更快”的定义。在捕获阶段添加的事件监听器将冒泡阶段的那些事件监听器之前触发,但所有事件监听器都将在浏览器重绘之前完成,因此使用其中一个并没有真正的性能优势。

虽然有一些值得注意的差异:

并非所有事件都会冒泡。 focusload 等事件不会冒泡。这意味着如果您将非捕获事件监听器附加到元素上的非冒泡事件,则可以确保只有该元素触发了事件,而不是它们的子元素之一。相反,您可以使用捕获阶段附加单个事件监听器,并动态获取触发它的元素,并减少监听器的数量并响应 future 的元素。

捕获阶段可以在事件到达子元素之前停止传播它。在事件冒泡到父元素之前取消它可能更常见。但是,在事件到达 child 之前取消它可能很有用,在这种情况下,捕获阶段确实有优势(或劣势)。

总结:

为所需功能选择正确的捕获模式。在大多数情况下,两者都没有真正的性能优势,即使有也只是微优化。

关于javascript - 对于JavaScript事件,冒泡比捕获好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34365643/

相关文章:

vb.net - MessageBox.Show 不引发 HelpRequested 事件

javascript - Angularjs 使用 forEach

c++ - 我还应该在 C++11 中返回 const 对象吗?

python - 如何在二维数组中使用 numpy.searchsorted 进行矢量化

mysql - MySQL表的性能

python - 使用卷挂载的Docker上的事件监听器不起作用

c# - 如何通过 C# 反射检查一个方法是否可以作为事件的处理程序?

javascript - 数组显示未定义作为答案而不是显示对象值

javascript - 如何在 React 组件的返回函数中使用 IIFE?

javascript - node.js - 如何在 mongodb 驱动程序中切换数据库?