Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时使用jQuery IsimmediatePropagationsToping()方法?_Javascript_Javascript Events_Jquery - Fatal编程技术网

Javascript 何时使用jQuery IsimmediatePropagationsToping()方法?

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"); }); -

在什么情况下会使用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) {
    if(e.isPropagationStopped()) return;
    alert("Handler 2");
});

-只有第一个警报触发,才能达到预期效果。根据您的事件顺序,同样的情况也会发生。当然还有其他例子,但这些都是您在正常使用中可能遇到的情况。

我明白了。实际上,我在一个控件上只有一个.live()事件处理程序。但是,该控件在页面上出现两次,因此处理程序会被调用两次。在处理程序中设置和检查ImmediatePropagation是可行的,但我觉得更好的解决方案是,如果为启动该事件的控件调用一次该事件。对于jquery 1.8,第一个示例仅触发一个事件,停止传播阻止另一个事件