我知道live
在版本1.7中被弃用,在1.9中被删除,并且不再推荐它。但仍然,因为我正在准备面试机测试,因此我试图区分live
和on
。 Document说JQuery.live()无法正常工作
调用event.stopPropagation()在事件处理程序处于停止的事件处理程序的安装文件 在下部无效;该事件已经传播到文件。
因此我试过这个。 标记:
<div>
<h1>
<a href="#">
<span>Hello</span>
</a>
</h1>
</div>
脚本:
$(document).ready(function() {
$('span').live("click",function() {
alert('span');
});
$('a').click(function() {
alert('span a');
});
$('h1').click(function() {
alert('span a h1');
event.stopPropagation();
});
$('div').click(function() {
alert('span a h1 div');
});
});
我使用jQuery 1.7版本,其中两个live
和on
存在。
发生了什么:
- 跨度
live
是没有得到调用,而是直接调用的a
click
。 - 如果我删除除
live
之外的所有其他事件,则它将被调用。 - 作为医生说,这是在做完全相反的,即它停止事件冒泡,如果我用
live
连接event.stopPropagation();
'调用事件。事件 中的stopPropagation()处理程序在停止文档中较低的事件处理程序时效果不佳;'jsfiddle中的行为是正确的。它会阻止事件冒泡文档,但是在停止附加到子dom的事件方面效率低下,这就是为什么h1和a上的事件已经触发了 – mohamedrias 2015-04-01 05:54:16