Javascript event.stopPropagation停止实时事件的传播,尽管它不应该停止
的文档说明event.stopPropagation不应停止live events()的传播。然而,这对我来说正好相反。试试这个:。单击红色Div将触发附加到html元素的实时事件。您正在交换项目。在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'
.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');
});