2012-12-30 70 views
1

可能重複:
How to prevent other event handlers, from first handler, in jQuery如何防止一個jQuery函數被調用

我有兩個jQuery的功能是這樣的:

$('#click-me').live('click', function(event) { 
    alert("Hello World"); 
    event.preventDefault(); 
}); 
$('#click-me').live('click', function(event) { 
    alert("Goodbye World"); 
}); 

這可能聽起來很奇怪,但是讓我們說我不希望第二個函數(與「再見世界」警報執行),我會怎麼做? event.preventDefault沒有幫助。

感謝 彼得

+0

據透露,'.live()'被棄用。 – ThiefMaster

+0

只有最新的jQuery,我正在運行一個較舊的應用程序。 –

+0

@FelixKling當他們真正工作時,你能否停止評論每個人的答案?誰在乎它是否是重複的,有數百個問題,我只是沒有找到任何我自己! –

回答

5

您可以使用event.stopImmediatePropagation()阻止所有後續處理程序被觸發。

+1

這工作acharm。我會盡可能標記爲已回答!謝謝你有一個新的一年:) –

1

嘗試像

var goodbyeCallback = function(event) { 
    alert("Goodbye World"); 
} 

$('#click-me').live('click', function(event) { 
    alert("Hello World"); 
    $('#click-me').die('click', goodbyeCallback); 
}); 
$('#click-me').live('click', goodbyeCallback); 

可能有當回調的啓動順序的煩惱;你不能加入他們的單一回調?

順便說一句:jQuery documentation.live()已棄用。

+0

處理程序總是按照它們綁定的順序被解僱。所以在這種情況下,第一次事件被觸發時,這兩個處理程序都會被調用。另外,'.live'和'.off'不能一起工作。 –

1

代替live()使用on()off()

$('#click-me').on('click', canBeOnOrOff); 

function canBeOnOrOff(event) { 
    alert('goodbye world'); 

    // this removes the event handler from the click event 
    $('#click-me').off('click', canBeOnOrOff); 
} 
+0

這不等同。 OP使用事件委託,您將處理程序直接綁定到元素。 –

+0

這是等同的。 .on()像.live()那樣委託事件。事實上,.live()已被棄用,轉而使用.on(): http://api.jquery.com/on/(跳轉到「直接和委託事件」) – hunterloftis

+0

是的,我知道你可以使用'.on',但你沒有這樣做;) –

相關問題