【发布时间】:2012-12-25 05:31:00
【问题描述】:
在用户必须多次点击/使用按键的游戏中,
在所有事件中使用 event.stopPropagation() 有什么好处吗 我知道冒泡没用的处理程序?
假设我有一个绑定了点击事件的 div,
<div id="mydiv">CLICK</div>
$('#mydiv').click(function(){...});
如果我单击它,此事件将传播到此 div 的所有祖先元素(例如 body/html/document/window)。所以只是想知道立即停止事件传播是否会更好、相同或更坏。
事实上,我不知道 javascript 引擎如何在内部处理绑定(或不绑定)到元素的事件,如果这可以用作侦听器还是什么...
【问题讨论】:
-
我想不出停止传播的理由,除非您明确不希望事件由绑定到它的祖先元素处理。
-
@KevinB 所以javascript不遵循祖先的所有层次来“检查”是否绑定了特定事件?它只是什么都不做?
-
事件仍然会在树上冒泡,但你为什么要阻止它呢?绑定到每个元素并停止传播比让它继续传播更占用处理器资源。
-
问题是什么?你想知道
stopPropagation和stopImmediatePropagation的区别是什么吗? -
事件无论你是否绑定到它们都会发生。例如,该 div 之后的 span 元素也会响应点击。当您单击它时,会发生一个单击事件,然后会在 DOM 层次结构中冒泡。您的代码只是在监听事件。
标签: javascript jquery