jquery Event.stopPropagation()似乎不起作用

时间:2009-07-13 22:11:01

标签: jquery events

我完全不知道应该做什么?我希望如果我在一个事件上调用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>

1 个答案:

答案 0 :(得分:50)

直播活动不遵循相同的事件冒泡规则。请参阅live event handling上的文档。

引用上面的参考:

  

直播活动不会冒泡   传统的方式并不可能   停止使用stopPropagation或   stopImmediatePropagation。例如,   以两次点击事件为例 -   一个绑定到“li”和另一个“li a”。   是否应该在内部发生咔嗒声   将触发两个BOTH事件。   这是因为当一个   $(“li”)。bind(“click”,fn);受约束   你实际上在说“每当一个   在LI元素上发生click事件 -   或者在LI元素内 - 触发它   点击事件。“进一步停止   处理现场活动,fn必须   返回false。