Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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
Javascript event.stopPropagation停止实时事件的传播,尽管它不应该停止_Javascript_Jquery_Events_Live - Fatal编程技术网

Javascript event.stopPropagation停止实时事件的传播,尽管它不应该停止

Javascript event.stopPropagation停止实时事件的传播,尽管它不应该停止,javascript,jquery,events,live,Javascript,Jquery,Events,Live,的文档说明event.stopPropagation不应停止live events()的传播。然而,这对我来说正好相反。试试这个:。单击红色Div将触发附加到html元素的实时事件。您正在交换项目。在.live内,您不能使用停止播放。例如,这会生成两个警报: 在内部。单击(.bind),stopPropagation无缝工作。它只是阻止div事件冒泡到html元素 由于.live()方法在事件传播到文档顶部后处理事件,因此无法停止实时事件的传播 意义 $('html').live('click'

的文档说明event.stopPropagation不应停止live events()的传播。然而,这对我来说正好相反。试试这个:。单击红色Div将触发附加到html元素的实时事件。

您正在交换项目。在
.live
内,您不能使用
停止播放
。例如,这会生成两个警报:

内部。单击
.bind
),
stopPropagation
无缝工作。它只是阻止div事件冒泡到html元素

由于.live()方法在事件传播到文档顶部后处理事件,因此无法停止实时事件的传播

意义

$('html').live('click', function(e){
    e.stopPropagation(); // does nothing
    alert('html');
});

你曲解了文件。当您停止对单击事件的传播时,它不会冒泡到live事件。

文档告诉您的是,无法从
live
处理程序调用
StopperPagation

由于jQuery通过侦听传播到
元素的所有事件,然后查看触发元素是否与原始选择器匹配,从而实现
live
事件,因此停止从元素上的常规事件处理程序的传播可防止事件到达
live
处理程序


编辑:如果您不清楚DOM事件和事件传播是如何工作的,并且Microsoft在W3C、classic和IE模型中有一个很好的解决方案。

哦,我的错。。但是,还有什么可以做我想做的,即,确保当用户单击页面上的任何位置时,无论遇到什么阻碍,都会调用一个事件处理程序?这是给爆米花的。因此,我想捕获页面上的所有点击,如果点击的目标没有popover作为父对象,那么我将关闭popover。无法保证冒泡事件的传播不会停止。即使您从未调用过
e.stopPropagation()
,也可能使用了一个jQuery插件。您可以跳出jQuery的事件机制(坏主意!),在中注册一个处理程序,但在IE<9中这甚至是不可能的。在这种情况下,最好在页面内容上方和弹出窗口正下方添加一个覆盖层。注册一个简单的
单击
上的
处理程序并隐藏。或者,避免重新发明轮子,使用类似或的方法。
$('html').live('click', function(e){
    e.stopPropagation(); // does nothing
    alert('html');
});