Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery Event.stopPropagation()似乎不起作用_Jquery_Events - Fatal编程技术网

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

jquery Event.stopPropagation()似乎不起作用,jquery,events,Jquery,Events,我完全不知道这是怎么回事吗?我希望如果我对一个事件调用stopPropagation(),该事件的处理程序不会在祖先元素上被触发,但下面的示例不是这样工作的(至少在Firefox3中是这样) $(“输入”).live(“单击”),函数(事件){ log(“调用的输入单击处理程序”) event.stopPropagation() }); $(“正文”).live(“单击”),功能(事件){ log(“正文被调用。event.isPropagationStopped()返回:”+event.is

我完全不知道这是怎么回事吗?我希望如果我对一个事件调用stopPropagation(),该事件的处理程序不会在祖先元素上被触发,但下面的示例不是这样工作的(至少在Firefox3中是这样)


$(“输入”).live(“单击”),函数(事件){
log(“调用的输入单击处理程序”)
event.stopPropagation()
});
$(“正文”).live(“单击”),功能(事件){
log(“正文被调用。event.isPropagationStopped()返回:”+event.isPropagationStopped());
})
...

实时事件不遵循相同的事件冒泡规则。请参阅上的文档

引用上述参考资料:

现场活动不会在市场上出现泡沫 传统的方式和方法是不能改变的 停止使用StopRopagation或 停止即时传播。例如 以两次单击事件为例- 一个绑定到“li”,另一个绑定到“li a”。 如果内部面板上出现咔嗒声 锚定这两个事件将被触发。 这是因为当 美元(“li”)。绑定(“单击”,fn);注定 你实际上是在说“无论什么时候 单击事件发生在LI元素上- 或者在LI元素内部-触发此 单击“事件”。以进一步停止 处理实时事件时,fn必须 返回false


令人惊叹的。非常感谢您的澄清。我在这里问同样的问题:问题是,当您必须停止在实时事件上传播时,我们该怎么办?我没有选择删除实时处理程序,因为我正在处理动态加载的元素。
<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>