2011-09-11 12 views
6

La domanda è piuttosto semplice. Se seleziono due o più elementi con jQuery e, ad esempio, utilizzo la funzione fadeOut() di jQuery per nasconderli, la funzione di callback viene invocata due volte (per ciascun elemento). C'è un modo per ricevere solo una richiamata?Nascondere più elementi con jQuery e ottenere una richiamata

Il codice attualmente utilizzato per eseguire questa attività è incollato di seguito.

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

Una domanda simile è stato registrato prima (jQuery multiple animate() callback), ma la soluzione sembra abbastanza complicato per quello che sembra un semplice problema.

risposta

16

È possibile utilizzare $.when[docs] (deferred objects):

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

DEMO

Questo funziona con qualsiasi animazione afaik.

+0

Ci sono altri modi? sembra così a spasso ... o dev'essere considerato un modo giusto in jQuery e solo la mia ignoranza è che gli oggetti? –

+0

Non sono a conoscenza di nessun altro modo e anche la documentazione di '.animate' non menziona nulla. –

Problemi correlati