【发布时间】:2012-04-01 14:48:58
【问题描述】:
如果我没有从事件回调中返回 false,或者使用 jQuery 的 e.stopPropagation 功能,则事件会在 DOM 中冒泡。
在大多数情况下,我不在乎事件是否冒泡。就像这个 DOM 结构示例:
<div id="theDiv">
<form id="theForm" >
<input type="submit" value="submit"/>
</form>
</div>
通常,我没有像这样的多个嵌套提交回调:
$('#theDiv').submit(function() {
alert('DIV!');
});
$('#theForm').submit(function(e) {
alert('FORM!');
e.preventDefault();
});
Fiddle
该演示显示submit 事件冒泡到<div>!
如果我停止传播或只是阻止默认,对我来说没有区别。
在这些情况下,如果我停止传播,我会获得性能优势吗?
【问题讨论】:
-
它应该没有任何效果,甚至可能是一个成功,因为浏览器一直在冒泡数百万个事件,它不一定只有在有监听器的情况下才会冒泡它们。
-
@RobG。这就是为什么我想取消它...
-
为什么不对它进行基准测试?理论上,停止传播 = 少做 = 更快。在实践中,这取决于浏览器的实现细节,而且无论哪种方式都可能难以察觉。
标签: jquery performance jquery-events event-bubbling event-propagation