event.stopPropagation停止传播直播活动,但不应该

时间:2011-07-19 14:12:54

标签: javascript jquery events live

说明event.stopPropagation的文档不应该停止传播直播事件(http://api.jquery.com/event.stopPropagation)。然而,它对我来说恰恰相反。试试这个:http://jsfiddle.net/PSYg8。单击红色Div应该触发附加到html元素的实时事件。

3 个答案:

答案 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模型。