2011-01-26 16 views

Odpowiedz

38

Użyj callback:

$('somediv').fadeOut(function() { $(this).remove(); }); 

Kod w funkcji zwrotnej jesteś przechodzącej do fadeOut()(docs) nie będzie wykonywał aż animacja jest zakończona.

Przykład:http://jsfiddle.net/p2LWE/

Alternatywą byłoby queue()(docs)remove()(docs), ale myślę, że lepiej jest zwrotna.

+0

i gdzie chcesz dodać "wolno" parametr "usuń"? – armen

+2

@armen: $ ('somediv'). FadeOut ('slow', function() {$ (this) .remove();}); – Merijn

1

W łańcuchu jQuery, jedna część łańcucha nie czeka na zakończenie innych części, jeśli istnieje składnik oparty na czasie. Więc jeśli chcesz, aby coś się wydarzyło, gdy kończy się coś innego, musisz użyć callbacków. W takim przypadku należy wywołać fadeOut() z parametrem określającym, która funkcja ma zostać uruchomiona po zakończeniu. Tak:

$('#somediv').fadeOut(function(){ $(this).remove(); })};

Więc kiedy fadeOut() odbywa się (i można dodać wiodącą parametr, który dyktuje jak długo to zajmie, albo w milisekundach lub „szybki”, „normalne” lub „wolny”), wywoła funkcję, która ma wartość remove().

9

Oto prosty sposób,

$('#somediv').fadeOut(300,function(){ $(this).remove(); })}; 

lub

$('#somediv').fadeOut("slow",function(){ $(this).remove(); })}; 
Powiązane problemy