Intento $('somediv').fadeOut.remove(); pero solo lo elimina, bang ... no espera el buen desvanecimiento, y LUEGO elimina
por qué... cómo respetar el desvanecimiento y luego eliminar...
Utilice una devolución de llamada:
$('somediv').fadeOut( function() { $(this).remove(); }); El código en 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 poner en queue() (docs) remove() (docs) , pero creo que la devolución de llamada es mejor.
$('somediv').fadeOut() .queue(function(nxt) { $(this).remove(); nxt(); });Aquí está la manera simple,
$('#somediv').fadeOut(300,function(){ $(this).remove(); })};o
$('#somediv').fadeOut("slow",function(){ $(this).remove(); })};Con el encadenamiento de jQuery, una parte de la cadena no espera a que terminen otras partes si hay un componente basado en el tiempo. Entonces, cuando desee que suceda algo cuando termine otra cosa, deberá usar devoluciones de llamada. En este caso, llamas a fadeOut() con un parámetro para qué función ejecutar cuando termine. Al igual que:
$('#somediv').fadeOut(function(){ $(this).remove(); })};
Entonces, cuando se realiza fadeOut() (y puede agregar un parámetro principal que dicta cuánto tiempo tomará, ya sea en milisegundos o 'rápido', 'normal' o 'lento'), llamará a la función, que hace remove() .