说明event.stopPropagation的文档不应该停止传播直播事件(http://api.jquery.com/event.stopPropagation)。然而,它对我来说恰恰相反。试试这个:http://jsfiddle.net/PSYg8。单击红色Div应该触发附加到html元素的实时事件。
答案 0 :(得分:0)
你正在交换物品。在.live
内,您无法使用stopPropagation
。例如,这会生成两个警报:http://jsfiddle.net/PSYg8/1/。
$(document).ready(function(){
$('html').live('click', function(){
alert('html');
event.stopPropagation();
});
$('div').click(function(event){
alert('div');
});
});
在.click
(.bind
)内,stopPropagation
可以无缝运行。它只是阻止div事件冒泡到html元素。
答案 1 :(得分:0)
由于.live()方法在事件传播到文档顶部后处理事件,因此无法停止实时事件的传播
含义
$('html').live('click', function(e){
e.stopPropagation(); // does nothing
alert('html');
});
您误解了文档。当您停止点击事件的传播时,它不会冒泡到直播事件。
答案 2 :(得分:0)
文档告诉您的是,无法从 stopPropagation
处理程序中调用live
。
因为jQuery通过监听传播到live
元素的所有事件然后查看触发元素是否与原始选择器匹配来实现<html>
事件,所以停止从元素上的常规事件处理程序传播阻止事件到达live
处理程序。
编辑:如果您不清楚DOM事件和事件传播的工作原理,QuirksMode has a wonderful analysis of the capturing and bubbling models和Microsoft在W3C,classic和IE中都有great page that lets you visualize how event propagation works模型。