jQuery slideUp (). remove (), kaldırma işlemi gerçekleşmeden önce slideUp animasyonunu göstermiyor


94

Bu JavaScript satırına sahibim ve gördüğüm davranış, selectedLi"yukarı kaymadan" anında kaybolmasıdır. Bu beklediğim davranış değil.

selectedLiSlaytların kaldırılmadan önce yukarı kalkması için ne yapmalıyım ?

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

Yanıtlar:


198

Bir geri aramada kaldırılacak çağrıyı arg to slideUp'a koyarak düzeltebilir misiniz?

Örneğin

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

4
Tek hızın "yavaş" ve "hızlı" olduğunu unutmayın. Diğer hızların ya milisaniye cinsinden olması gerekir ya da varsayılan olarak 400
değerindedir

19

Daha açık olmanız gerekiyor: "Bu" demek yerine (işe yaraması gerektiğini kabul ediyorum), şunu yapmalısınız:

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

2
SORRY = kimliğimi kaldırmayı unuttum, şöyle olmalı: $ ('# yourdiv']. SlideUp (1000, function () {$ ('# yourdiv'). Remove ();});
Blake

12
$ ("# Yourdiv") yerine $ (this) kullanmak, jQuery'nin bir düğüm aramasına gerek olmadığından daha optimize edilmiştir.
MaximeBernard

$("#yourdiv")Bunun yerine kullanmak $(this)tamamen gereksizdir ve bu nedenle bu kod OP'nin problemini çözmez. Bu kod, completegeri aramayı kullandığı için sorunu giderir .
Gavin

8

En basit yol, diğerlerinin de söylediği gibi, bu örnekte olduğu gibi, slideUp içindeki "remove ()" işlevini bir parametre olarak çağırmaktır:

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

SlideUp sona ermeden önce remove () işlevinin yürütülmesini önlemek için anonim işlev () içinde çağırmak zorunludur. Diğer bir eşit yol da jQuery işlevi "promise ()" kullanmaktır. Benim gibi kendini açıklayan kodu sevenler için daha iyi;)

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

3

Sözleri kullanarak birden fazla animasyonun bitmesini de bekleyebilirsiniz, örneğin:

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

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

1
Test ettim - yukarı kaydırdıktan sonra elemanı çıkarmıyor.
Konstantin Spirin

Öğeyi etkili bir şekilde gizler, ancak gerçekte DOM'dan kaldırmaz.
andreszs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.