2012-04-04 16 views
6

Come posso eseguire una funzione dopo che un determinato elemento ha terminato l'animazione? È un'animazione slide-down, l'elemento è nascosto e quando si fa clic su qualcosa, diventa visibile facendo scorrere il suo contenuto verso il basso (+ altezza).Evento dopo che un div ha finito di animare?

non ho alcun controllo sulla funzione di animazione su questo elemento, quindi non posso usare l'opzione di richiamata dalla funzione $ .animate ...

In questo momento ho qualcosa di simile

$('.trigger').click(function(){ // <-- "trigger" will make the element animate 
    setTimeout(myfunction, 500); 
}); 

che funziona ma non mi piace, si sente hacky

+0

Vedere gli altri codici ... – mplungjan

risposta

3

se si sta utilizzando jQuery 1.5 + è possibile utilizzare il metodo di jQuery promise(): http://jsfiddle.net/rGBk7/

ad es.

/* do animation */ 
$("div").animate({ 'marginLeft' : '300px' }, 1000); 

/* attach a promise to animated element/s */  
$("div").promise().done(function() { 
    alert("animation end"); 
}); 

Vedi http://api.jquery.com/promise/

+0

questo viene eseguito non appena la pagina si carica. Il problema è che la mia animazione viene eseguita sull'intervento dell'utente (fai clic su un elemento diverso) – Alex

+0

in questo modo? http://jsfiddle.net/fcalderan/rGBk7/5/ – fcalderan

+0

qualcosa del genere, ma come ho detto, non ho alcun controllo sulla funzione di animazione :(Quindi dovrebbe essere: http://jsfiddle.net/rGBk7/20/ – Alex

1

Vuoi dire:


$("div").queue(function(){ 
    your_function(); 
}); 

Sarà eseguito dopo che la coda di animazione è completa

Problemi correlati