2011-01-26 11 views

Respuesta

38

Utilice una devolución de llamada:

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

el código de la función de devolución de llamada que está pasando a fadeOut()(docs) no se ejecutará hasta que se complete la animación.

Ejemplo:http://jsfiddle.net/p2LWE/

Una alternativa sería la de la queue()(docs)remove()(docs), pero creo que la devolución de llamada es mejor.

$('somediv').fadeOut() 
      .queue(function(nxt) { 
       $(this).remove(); 
       nxt(); 
      }); 
+0

y donde podría agregar el parámetro "lento" para "eliminar"? – armen

+2

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

1

Con jQuery encadenamiento, una parte de la cadena no espera a que otras partes finalicen si hay un componente basado en el tiempo. Entonces, cuando desee que algo suceda cuando otra cosa termine, necesitará usar devoluciones de llamada. En este caso, llame al fadeOut() con un parámetro para la función que se ejecutará cuando esté listo. De este modo:

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

Así que cuando se hace fadeOut() (y se puede añadir un parámetro líder que dicta cuánto tiempo va a tomar, ya sea en milisegundos o 'rápido', 'normal', o 'lento'), llamará a la función, que hace el remove().

9

Aquí es la forma más sencilla,

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

o

$('#somediv').fadeOut("slow",function(){ $(this).remove(); })}; 
Cuestiones relacionadas