我完全不知道应该做什么?我希望如果我在一个事件上调用stopPropagation(),那么该事件的处理程序将不会在祖先元素上被触发,但是下面的例子不是那样工作的(至少在FireFox 3中)..
<script type="text/javascript">
$("input").live("click", function(event){
console.log("input click handler called")
event.stopPropagation()
});
$("body").live("click", function(event){
console.log("body was click handler called. event.isPropagationStopped() returns: " + event.isPropagationStopped());
})
</script>
...
<body>
<input type="text" >
</body>
答案 0 :(得分:50)
直播活动不遵循相同的事件冒泡规则。请参阅live event handling上的文档。
引用上面的参考:
直播活动不会冒泡 传统的方式并不可能 停止使用stopPropagation或 stopImmediatePropagation。例如, 以两次点击事件为例 - 一个绑定到“li”和另一个“li a”。 是否应该在内部发生咔嗒声 将触发两个BOTH事件。 这是因为当一个 $(“li”)。bind(“click”,fn);受约束 你实际上在说“每当一个 在LI元素上发生click事件 - 或者在LI元素内 - 触发它 点击事件。“进一步停止 处理现场活动,fn必须 返回false。