在什么情况下会使用jQuery的isImmediatePropagationStopped方法?他们文档页面上的示例没有帮助。
7lrncoxx1#
例如,如果你遇到了多个.live()事件,你可能会希望.stopImmediatePropagation()然后在下面的处理程序中检查它,因为你已经冒泡到了同一个元素。
.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()也会发生相同的情况。当然还有其他示例,但这些都是您在正常使用中可能遇到的情况。
.delegate()
1条答案
按热度按时间7lrncoxx1#
例如,如果你遇到了多个
.live()
事件,你可能会希望.stopImmediatePropagation()
然后在下面的处理程序中检查它,因为你已经冒泡到了同一个元素。You can test it here-请注意,两个警报仍然触发。
即使我们立即停止传播,我们也是在一个无关紧要的水平上倾听,所以我们实际上需要检查它:
You can test it here-只触发第一个警报,这是预期的结果。根据您的事件顺序,
.delegate()
也会发生相同的情况。当然还有其他示例,但这些都是您在正常使用中可能遇到的情况。