在 jQuery 中,事件处理程序的默认时间是冒泡时间。有什么优势吗?
capture 不是比 bubble 快吗?
最佳答案
is bubble better than capture?
没有。它也没有更糟。只是不同。
Isn't capture faster than bubble?
取决于您对“更快”的定义。在捕获阶段添加的事件监听器将在冒泡阶段的那些事件监听器之前触发,但所有事件监听器都将在浏览器重绘之前完成,因此使用其中一个并没有真正的性能优势。
虽然有一些值得注意的差异:
并非所有事件都会冒泡。 focus
和 load
等事件不会冒泡。这意味着如果您将非捕获事件监听器附加到元素上的非冒泡事件,则可以确保只有该元素触发了事件,而不是它们的子元素之一。相反,您可以使用捕获阶段附加单个事件监听器,并动态获取触发它的元素,并减少监听器的数量并响应 future 的元素。
捕获阶段可以在事件到达子元素之前停止传播它。在事件冒泡到父元素之前取消它可能更常见。但是,在事件到达 child 之前取消它可能很有用,在这种情况下,捕获阶段确实有优势(或劣势)。
总结:
为所需功能选择正确的捕获模式。在大多数情况下,两者都没有真正的性能优势,即使有也只是微优化。
关于javascript - 对于JavaScript事件,冒泡比捕获好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34365643/