jQuery slideUp (). remove () no parece mostrar la animación de slideUp antes de que ocurra la eliminación


94

Tengo esta línea de JavaScript y el comportamiento que veo es que el selectedLi desaparece instantáneamente sin "deslizarse". Este no es el comportamiento que esperaba.

¿Qué debo hacer para que se selectedLideslice hacia arriba antes de retirarlo?

selectedLi.slideUp("normal").remove();

Respuestas:


197

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

p.ej

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

4
Tenga en cuenta que "lento" y "rápido" son las únicas velocidades. Otras velocidades deben estar en milisegundos o se establecerán de forma predeterminada en 400. keyframesandcode.com/resources/javascript/deconstructed/jquery/…
bendman

19

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

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

2
LO SENTIMOS = Olvidé eliminar mi identificación, debería ser: $ ('# yourdiv'). SlideUp (1000, function () {$ ('# yourdiv'). Remove ();});
Blake

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

Usar en $("#yourdiv")lugar de $(this)es completamente redundante y no es por eso que este código soluciona el problema de OP. Este código soluciona el problema porque usa la completedevolución de llamada.
Gavin

8

La forma más sencilla es llamar 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 obligatorio llamarlo dentro de la función anónima () para evitar que remove () se ejecute antes de que termine slideUp. Otra forma igual es usar la función jQuery "promise ()". Mejor para aquellos a los que les gusta el código autoexplicativo, como yo;)

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

3

Con las promesas, también puede esperar a que finalicen varias animaciones, por ejemplo:

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

-2
selectedLi.slideUp(200, this.remove);

1
Probé: no elimina el elemento después de deslizarse hacia arriba.
Konstantin Spirin

Oculta eficazmente el elemento, pero en realidad no lo elimina del DOM.
andreszs
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.