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