2009-04-07 28 views
94

Sayfadaki bazı öğeleri taşımaya çalışıyorum ve animasyon gerçekleştiği sırada, animasyonun tamamlanmasından sonra "taşma: gizli" seçeneğine sahip olmak ve animasyon bittiğinde "otomatik" olarak "taşma" yapmak istiyorum . Ben jQuery biliyorumBir öğe animasyonluysa jQuery ile nasıl öğrenebilirim?

bazı eleman animasyonlu olup olmadığını belirleyen bir yarar işlevi vardır ama

+2

Bu görev için geri aramaları kullanın. – Mork0075

cevap

189
if($(elem).is(':animated')) {...} 

diğer bilgiler docs yerde bulamıyorum: http://docs.jquery.com/Selectors/animated


Veya:

$(elem) 
    .css('overflow' ,'hidden') 
    .animate({/*options*/}, function(){ 
     // Callback function 
     $(this).css('overflow', 'auto'); 
    }; 
+0

evet öyleydi, teşekkürler. bunu nasıl özleyebilirim kahretsin, ben geri çekilme "overflow: auto" programlayarak CSS stilleri üzerine yazma konusunda riske atmak istemiyorsanız, eski –

+0

FYI, sadece '.css ('overflow', '')' kullanın. Boş bir dizeyi geçmek genellikle bu özelliği elemanın stilinden tamamen kaldırır. Bunun belgelenmiş davranış olup olmadığından emin değil, ancak çok kullanışlı bir numara. –

+0

CSS animasyonlarını desteklediğini düşünmüyorum. – Gqqnbig

5

Alternatif olarak "!":

if (!$(element).is(':animated')) {...} 
+0

Bu çok doğru değil ... JQuery 'nin tersi' değil 'değil. 'değil' filtreli öğeleri jquery nesnesinden kaldırır. Animasyonlu nesne olup olmadığını kontrol etmek istiyorsanız, 'if (! $ (Element) .is (': animated')) {...}' – amosmos

+1

@amosmos Cevabınız düzenlenmiş ve topluluk onaylanmıştır .. Yuvarlanmıştım Doğru olduğu yere geri döndü. – Bill

+1

Harika, sadece şimdi kabul edilen yanıtın kopyası. BTW toplum tarafından onaylanan nedir? – amosmos

-1

Eğer css animasyon kullanarak ve spesifik class name kullanarak animasyonu atamak eğer, o zaman bu gibi kontrol edebilirsiniz: bir şey animasyon değilse, sadece bir ekleyebilir, test etmek

if($("#elem").hasClass("your_animation_class_name")) {} 

Ancak animasyon bittikten sonra animasyonu idare eden sınıfı sildiğinizden emin olun! Eğer animasyon unsurlara css uygulamak isterseniz

$("#elem").on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', 
function(){ 
     $(this).removeClass("your_animation_class_name"); 
}); 
+0

OP, jQuery animaiton kullanıyor. Bir alternatif öneren –

+0

. Ve sen animeyi mi kastettin? – KeepMove

+0

Evet, animasyon demek istedim. IMO cevabınız tamamen konu dışı. –

0
$('selector').click(function() { 
    if ($(':animated').length) { 
    return false; 
    } 

    $("html, body").scrollTop(0); 
}); 
+0

Bu kod soruyu yanıtlarken, sorunun nasıl ve/veya neden çözüldüğüne dair ek bağlam sağlayarak yanıtın uzun vadeli değerini artıracaktır. Lütfen, kalite cevabı sağlamak için bu [nasıl yapılır] (http://stackoverflow.com/help/how-to-answer) okuyun. – thewaywewere

İlgili konular