事件冒泡和停止传播

Posted

技术标签:

【中文标题】事件冒泡和停止传播【英文标题】:Event Bubbling, and Stop Propagation 【发布时间】:2011-12-09 19:07:53 【问题描述】:

event.bubblesfalse 对于任何事件与在处理事件时设置 event.stopPropagation()stopImmediatePropagation() 有什么区别?

我将 Flex4 与 AS3 一起使用。

【问题讨论】:

【参考方案1】:

在这篇文章中找到的信息 - Introduction to event handling in ActionScript 3.0 更具示范性和易于理解性。它将增强@Jason Sturges 上述接受的答案。

事件冒泡和事件捕获是事件的两个方面。如果将 event.bubbles 设置为 false,则表示该事件被标记为非冒泡事件。

气泡:指示事件是否是冒泡(和捕获)事件。这并不意味着该事件经历了或正在经历捕获或冒泡阶段,而是一种可以发生的事件。

下图(来自上述文章)显示了事件是如何进行的。

stopPropagation()stopImmediatePropagation() 的区别在下面的图片中会更清楚。

停止传播:

StopImmidiatePropagation :

【讨论】:

很好的答案,来源是 Adob​​e。接受的答案根本没有帮助:/ @BattleCity The accepted answer didn't help at all :/ 仍然有 10 个赞? ;) 他在需要时在同一天回答。这也是我赞成的好答案。【参考方案2】:

bubbles 设置为false 意味着事件根本不会在显示列表中冒泡。

stopPropagation()stopImmediatePropagation() 使当前事件侦听器最后处理事件。

stopPropagation()stopImmediatePropagation() 之间的区别在于,stopImmediatePropagation() 不仅会阻止事件移动到下一个节点,还会阻止该节点上的任何其他侦听器捕获它们的事件。

【讨论】:

【参考方案3】:

看例子:

object.addEventListener( MouseEvent.CLICK, functionOne );

object.addEventListener( MouseEvent.CLICK, functionTwo );

如果functionOne 包含event.stopPropagation()functionTwo 也会被调用。 如果它包含event.stopImmediatePropagation()functionTwo 将被忽略。

【讨论】:

以上是关于事件冒泡和停止传播的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义事件中停止事件传播/冒泡

jquery事件冒泡

事件冒泡和传播

[JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播

JavaScript ie如何阻止事件冒泡

事件冒泡和阻止事件冒泡