什么时候会使用jQuery isImmediatePropagationStopped()方法?

时间:2010-11-04 14:50:46

标签: javascript javascript-events jquery

在什么情况下会使用jQuery的isImmediatePropagationStopped方法?他们的文档页面上的示例没有帮助。

1 个答案:

答案 0 :(得分:2)

如果您遇到多个.live()事件的情况,您需要.stopImmediatePropagation()然后在后续处理程序中检查它,因为您已经冒泡到同一个元素。我们来看一个实例:

$("a").live("click", function(e) {
    alert("Handler 1");
    e.stopImmediatePropagation();
}).live("click", function(e) {
    alert("Handler 2");
});

You can test it here - 请注意两个警报仍然会触发。

即使我们立即停止播放,但我们正在听一个无关紧要的级别,所以我们确实需要检查它:

$("a").live("click", function(e) {
    alert("Handler 1");
    e.stopImmediatePropagation();
}).live("click", function(e) {
    if(e.isPropagationStopped()) return;
    alert("Handler 2");
});

You can test it here - 只有第一个警报触发,即所需的结果。根据您的活动顺序,.delegate()会出现同样的情况。当然还有其他一些例子,但这些是你在正常使用中可能遇到的情况。