2012-04-04 21 views
6

¿Cómo puedo hacer que una función se ejecute después de que un determinado elemento ha terminado de animar? Es una animación deslizable, el elemento está oculto y cuando se hace clic en algo, se volverá visible deslizando su contenido hacia abajo (+ altura).Evento después de que un div ha terminado de animar?

tengo ningún control sobre la función de animación en ese elemento, por lo que no se puede utilizar la opción de devolución de llamada desde la función $ .animate ...

Ahora mismo tengo algo así como

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

que trabaja pero no me gusta, se siente hacky

+0

mostrar la otra código ... – mplungjan

Respuesta

3

si estás usando jQuery 1.5 + se puede utilizar el método jQuery promise(): http://jsfiddle.net/rGBk7/

p. Ej.

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

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

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

+0

Esto va tan pronto como sea la página carga El problema es que mi animación se ejecuta con la intervención del usuario (haga clic en un elemento diferente) – Alex

+0

como tal? http://jsfiddle.net/fcalderan/rGBk7/5/ – fcalderan

+0

algo así, pero como dije, no tengo control sobre la función de animación :(Entonces debería ser: http://jsfiddle.net/rGBk7/20/ – Alex

1

¿Se refiere a:


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

Será ejecutado después de la cola de la animación es completa

Cuestiones relacionadas