Javascript中的事件传播
如果我在另一个元素中嵌套了一个元素(html),并且两个元素都附加了一个单击处理程序,那么单击内部元素将执行其单击处理程序,然后跳转到父元素并执行其单击处理程序。我就是这样理解的Javascript中的事件传播,javascript,jquery,events,event-propagation,Javascript,Jquery,Events,Event Propagation,如果我在另一个元素中嵌套了一个元素(html),并且两个元素都附加了一个单击处理程序,那么单击内部元素将执行其单击处理程序,然后跳转到父元素并执行其单击处理程序。我就是这样理解的 如果没有附加相同的事件,事件是否会在DOM树中冒泡?如果是,是否值得在每个处理程序的末尾放置一个event.stopPropagation()来停止此操作并加快速度?除非设置event.cancelBubble=true或使用event.stopPropagation(),否则事件几乎总是冒泡。不过,只有当你的某个事件
如果没有附加相同的事件,事件是否会在DOM树中冒泡?如果是,是否值得在每个处理程序的末尾放置一个event.stopPropagation()来停止此操作并加快速度?除非设置event.cancelBubble=true或使用event.stopPropagation(),否则事件几乎总是冒泡。不过,只有当你的某个事件发生时,你才会意识到这一点 处理程序会被绊倒 请参阅,以获取出现气泡的事件列表。(注意:在HTML事件表中,cancelable是指event.preventDefault()或return false取消默认操作的有效性,而不是冒泡) 另请参见1.2.1基本流程,以了解事件传播的捕获阶段和冒泡阶段 编辑 表明通过停止传播可以提高性能,但不提供数据 建议浏览器应该针对冒泡行为进行优化,并表示应该没有明显的性能差异。同样没有数据 为提高事件处理性能提供了一种很好的技术,但没有直接讨论StopRopagation性能
最终,您必须分析差异,以便更好地了解站点的好处。我认为浏览器已经对这种行为进行了很好的优化,因此在停止传播时,您将无法获得显著的性能提升(可能真正复杂的嵌套DOM结构除外)。如果您担心绩效和处理大量事件,您可能会对事件委派感兴趣
此外,您应该记住,您的代码应该保持可读性和自解释性
stopPropagation()
是一种用于特定目的的方法,因此在每种方法中使用它都会让人感到困惑。谢谢。你知道一直停止传播是否会提高性能吗?我不知道。一般来说,冒泡是预期的行为,因此我怀疑浏览器会针对这种行为进行优化。我看看能找到什么。谢谢你的长篇大论。我会从你建议的链接开始做更多的挖掘。再次感谢。在任何方法中使用它都是我想要避免的,所以我完全同意。至于复杂的嵌套DOM,不幸的是,我有一个相当复杂的结构,这并不是因为组件艺术控件疯狂地在表中嵌套表。我在屏幕上显示100条记录时遇到了2.5秒的延迟。我从数据发送到浏览器的那一刻开始计时。这很可能是由于它为每个td和tr连接活动的方式。tr将调查活动授权。再次感谢您抽出时间。