Javascript 何时使用jQuery IsimmediatePropagationsToping()方法?
在什么情况下会使用jQuery的方法?他们文档页面上的示例没有帮助 例如,如果您遇到了多个事件的情况,那么您应该在下面的处理程序中检查它,因为您已经跳转到同一个元素。让我们举一个生动的例子:Javascript 何时使用jQuery IsimmediatePropagationsToping()方法?,javascript,javascript-events,jquery,Javascript,Javascript Events,Jquery,在什么情况下会使用jQuery的方法?他们文档页面上的示例没有帮助 例如,如果您遇到了多个事件的情况,那么您应该在下面的处理程序中检查它,因为您已经跳转到同一个元素。让我们举一个生动的例子: $("a").live("click", function(e) { alert("Handler 1"); e.stopImmediatePropagation(); }).live("click", function(e) { alert("Handler 2"); }); -
$("a").live("click", function(e) {
alert("Handler 1");
e.stopImmediatePropagation();
}).live("click", function(e) {
alert("Handler 2");
});
-请注意,两个警报仍在发出
尽管我们立即停止传播,但我们的收听水平并不重要,因此我们实际上需要检查它:
$("a").live("click", function(e) {
alert("Handler 1");
e.stopImmediatePropagation();
}).live("click", function(e) {
if(e.isPropagationStopped()) return;
alert("Handler 2");
});
-只有第一个警报触发,才能达到预期效果。根据您的事件顺序,同样的情况也会发生。当然还有其他例子,但这些都是您在正常使用中可能遇到的情况。我明白了。实际上,我在一个控件上只有一个.live()事件处理程序。但是,该控件在页面上出现两次,因此处理程序会被调用两次。在处理程序中设置和检查ImmediatePropagation是可行的,但我觉得更好的解决方案是,如果为启动该事件的控件调用一次该事件。对于jquery 1.8,第一个示例仅触发一个事件,停止传播阻止另一个事件