javascript – 停止事件冒泡 – 提高性能?
作者:互联网
如果我没有从事件回调返回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
该DEMO显示提交事件气泡到< div>!
如果我停止传播或仅阻止默认,它对我没有区别.
在这些情况下,如果我停止传播,我将获得性能优势?
解决方法:
性能优势?是的,有一些微不足道的好处,如this performance test between jQuery live()
and on()
所述.正如@Joseph所指出的那样,两者之间的区别在于,live会一直向上传播到树上,而on()只会传递到最近的公共父对象.
在那些测试中,显示on()可以比live()高出4倍.在实践中,这可能仍然不值得分裂,但如果你有非常深的html结构和许多事件触发器,我认为停止传播的性能差异是值得的.
标签:jquery,javascript,javascript-events,performance,event-propagation 来源: https://codeday.me/bug/20190613/1233897.html