2010-11-04 39 views

回答

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()發生同樣的情況。當然還有其他的例子,但這些都是你在正常使用情況下可能遇到的情況。

+0

我明白了。我實際上在控件上只有一個.live()事件處理函數。但是,該控件在頁面上顯示兩次,因此處理程序被調用兩次。設置和檢查處理程序工作中的ImmediatePropagation,但我覺得如果事件被調用一次以啓動該事件的控件,則會有更好的解決方案。 – 2010-11-04 15:23:29

+0

使用jquery 1.8第一個例子只激發一個事件,停止傳播阻止另一個事件 – 2012-10-04 12:39:37