答案 0 :(得分:4)
您是否阅读过documentation?
由于
.live()
方法在事件传播到文档顶部后处理事件,因此无法停止传播实时事件。
.live()
[docs]将事件处理程序绑定到文档根目录。您甚至可以按照日志的顺序看到这一点:
this should't be triggered
clicked
div
的事件处理程序在 a
元素的实时处理程序之前执行。
如果必须使用.live()
,那么解决此问题的唯一方法是将事件处理程序的事件绑定到div
.live()
}:
$('div').live('click', function(){
console.log("this should't be triggered");
});
如果您不必使用.live()
,则只需使用.click()
[docs]或.bind()
[docs]以正常方式将处理程序绑定到a
元素。
答案 1 :(得分:0)
使用bind
代替live
,live必须满足动态添加的元素,因此无法停止事件冒泡
$('div').click(function(){
alert('will not be triggered');
});
$('a').bind('click',function(e){
console.log('clicked');
e.stopPropagation();
alert("first");
alert("second");
});