2011-09-11 23 views
6

Pytanie jest całkiem proste. Jeśli wybiorę dwa lub więcej elementów za pomocą jQuery i, na przykład, użyję funkcji fadeOut() jQuery, aby je ukryć, funkcja wywołania zwrotnego wywoływana jest dwukrotnie (dla każdego elementu). Czy istnieje sposób na otrzymanie tylko jednego wywołania zwrotnego?Ukryj wiele elementów za pomocą jQuery i uzyskaj jeden oddzwonienie

Kod, którego obecnie używam do wykonania tego zadania, jest wklejony poniżej.

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

Podobne pytanie zostało wysłane przed (jQuery multiple animate() callback), ale rozwiązanie wydaje się dość skomplikowane dla co wydaje się prosty problem.

Odpowiedz

16

Można użyć $.when[docs] (deferred objects):

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

DEMO

To działa z każdym animacji AFAIK.

+0

Czy istnieje inny sposób? Wygląda na to, że chodzisz dookoła ... Czy w jQuery należy uważać to za właściwy sposób i to tylko moja niewiedza jest przedmiotem? –

+0

Nie jestem świadomy żadnego innego sposobu, a dokumentacja ".animate" również niczego nie wspomina. –

Powiązane problemy