事件冒泡和停止传播
Posted
技术标签:
【中文标题】事件冒泡和停止传播【英文标题】:Event Bubbling, and Stop Propagation 【发布时间】:2011-12-09 19:07:53 【问题描述】:event.bubbles
到 false
对于任何事件与在处理事件时设置 event.stopPropagation()
或 stopImmediatePropagation()
有什么区别?
我将 Flex4 与 AS3 一起使用。
【问题讨论】:
【参考方案1】:在这篇文章中找到的信息 - Introduction to event handling in ActionScript 3.0 更具示范性和易于理解性。它将增强@Jason Sturges 上述接受的答案。
事件冒泡和事件捕获是事件的两个方面。如果将 event.bubbles 设置为 false,则表示该事件被标记为非冒泡事件。
气泡:指示事件是否是冒泡(和捕获)事件。这并不意味着该事件经历了或正在经历捕获或冒泡阶段,而是一种可以发生的事件。
下图(来自上述文章)显示了事件是如何进行的。
stopPropagation()
和stopImmediatePropagation()
的区别在下面的图片中会更清楚。
停止传播:
StopImmidiatePropagation :
【讨论】:
很好的答案,来源是 Adobe。接受的答案根本没有帮助:/ @BattleCityThe 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
将被忽略。
【讨论】:
以上是关于事件冒泡和停止传播的主要内容,如果未能解决你的问题,请参考以下文章