2011-09-11 49 views
6

問題非常簡單。如果我用jQuery選擇兩個或多個元素,例如,使用jQuery的fadeOut()函數來隱藏它們,則會調用兩次(對於每個元素)回調函數。有沒有辦法只接收一個回調?使用jQuery隱藏多個元素並獲得一個回調

我目前用來執行此任務的代碼粘貼在下方。

$('#element-1, #element-2').fadeOut(250, function() { /* Callback invoked twice. */ }); 

類似的問題之前(jQuery multiple animate() callback)已經發布,但解決方案似乎是什麼似乎一個簡單的問題相當複雜。

回答

16

您可以使用$.when[docs]deferred objects):

$.when($('#element-1, #element-2').fadeOut(250)).then(function() { 
    // do something 
}); 

DEMO

這適用於任何AFAIK動畫。

+0

有沒有其他辦法?它看起來如此漫無目的......或者被認爲是jQuery中的一種合適的方式,這只是我對對象的無知? –

+0

我不知道任何其他方式,'.animate'文檔也沒有提及任何東西。 –