2011-01-26 19 views

cevap

38

bir geri arama kullanın:

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

Eğer animasyon tamamlanana kadar çalıştırmaz fadeOut()(docs) için geçiyoruz geri arama işlevi kodu.

Örnek:http://jsfiddle.net/p2LWE/

alternatif queue()(docs)remove()(docs) olurdu ama geri arama daha iyi olduğunu düşünüyorum.

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

ve "kaldır" için "yavaş" parametresini eklersiniz? – armen

+2

@armen: $ ('somediv'). FadeOut ('yavaş', işlev() {$ (this) .remove();}); – Merijn

1

jQuery zincirleme ile, zincirin bir kısmı, zamana bağlı bir bileşen varsa diğer parçaların bitmesini beklemez. Başka bir şey bittiğinde bir şey olmasını istediğinizde, geri aramaları kullanmanız gerekir. Bu durumda, fadeOut()'u, bittiğinde hangi işlevin çalıştırılacağı parametresiyle çağırabilirsiniz. böylece gibi:

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

Yani fadeOut() bittiğinde (ve bunu alacağım ne kadar, ya miliseconds veya 'hızlı', 'normal' veya 'yavaş' dikte lider parametre ekleyebilir), remove()'u yapan işlevi çağırır. İşte

9

basit bir yoludur,

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

veya

$('#somediv').fadeOut("slow",function(){ $(this).remove(); })}; 
İlgili konular