在什么情况下会使用jQuery的isImmediatePropagationStopped方法?他们的文档页面上的示例没有帮助。
答案 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()
会出现同样的情况。当然还有其他一些例子,但这些是你在正常使用中可能遇到的情况。