2008-11-21 7 views

Respuesta

174

¿Podría solucionarlo poniendo la llamada para eliminar en una devolución de llamada arg a slideUp?

por ejemplo

selectedLi.slideUp("normal", function() { $(this).remove(); }); 
+3

Tenga en cuenta que "lenta" y "rápida "son las únicas velocidades. Otras velocidades deben estar en milisegundos o tendrán un valor predeterminado de 400. http://www.keyframesandcode.com/resources/javascript/deconstructed/jquery/#speeds – bendman

-1
selectedLi.slideUp(200, this.remove); 
+1

Probé - no elimina el elemento después de deslizar hacia arriba. –

+0

Oculta eficazmente el elemento, pero en realidad no lo elimina del DOM. – andreszs

11

Es necesario ser más explícito: en lugar de decir "este" (que estoy de acuerdo debería funcionar), usted debe hacer esto:

$("#yourdiv").slideUp(1000, function() { 
    $(this).remove(); 
}); 
+1

SORRY = olvidé eliminar mi identificación, debería ser: $ ('# yourdiv'). SlideUp (1000, función() {$ ('# yourdiv'). Remove();}); – Blake

+12

Usar $ (this) en lugar de $ ("# yourdiv") está más optimizado ya que jQuery no necesita buscar un nodo. – MaximeBernard

+0

Usar '$ (" # yourdiv ")' en lugar de '$ (this)' es completamente redundante y esa no es la razón por la que este código corrige el problema de OP. Este código soluciona el problema porque usa la devolución de llamada 'completa'. – Gavin

5

El más simple forma está llamando a la función "remove()" dentro de slideUp como un parámetro como otros han dicho, como este ejemplo:

$("#yourdiv").slideUp("normal", function() { 
    $(this).remove(); 
}); 

Es imprescindible llamarlo dentro de la función anónima() para evitar que remove() se ejecute antes de que el slideUp haya finalizado. Otra forma igual es usar la función jQuery "promise()". Mejor para aquellos que les gusta código explica por sí mismo, como yo;)

$("#yourdiv").slideUp("normal").promise().done(function() { 
    $(this).remove(); 
}); 
1

Usando promesas también se puede esperar a múltiples animaciones para obtener acabados, por ejemplo:

selectedLi.slideUp({duration: 5000, queue: false}) 
.fadeOut({duration: 3000, queue: false}) 
.promise().done(function() { 
    selectedLi.remove() 
}) 
Cuestiones relacionadas