代码之家  ›  专栏  ›  技术社区  ›  dev.e.loper

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

  •  2
  • dev.e.loper  · 技术社区  · 14 年前

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

    1 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    如果你处于多重 .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() . 当然还有其他的例子,但是这些是你在正常使用中可能遇到的情况。