2016-03-30 24 views
1

Bütün sorun, sabitlenmiş bir üstbilgi var ve buna göre hareket etmem gereken bir div var. Animasyonlardan biri 3 ya da 4 kat daha hızlı tıklarsam, bir sorun olsa da, içeriğin içinde 'under' div'ına sahip olurum. Animasyon ve kaymadan önce duruyorum. Sıra kullanarak denedim .. Hayır boşuna.jQuery, animasyonla örtüşen konu

$(".header").click(function() { 

    $header = $(this); 
    $content = $header.next(); 
    $content.stop().slideToggle(500, function() { 
    if(($('.lol').css('margin-top')) == '47px') 
{ 
$(".under").stop().animate({'margin-top': "100px"}, 500) 
} 
else 
{ 
$(".under").stop().animate({'margin-top': "47px"}, 500) 
} 
    }); 
}); 

https://jsfiddle.net/zddzvxLy/8/

İşte sorunu göstermek için jsfiddle bu. Birkaç kez başlığını gerçekten hızlı ve tıklamayı deneyin 'Bu seferki İÇERİK içinde görünecek "altında olmalıdır

cevap

1

, sahip hiçbir sınıfa .lol ile madde - İkinci .under

için, Üçüncüsü stop(true, true)

için stop() aramaları değiştirmek değiştirmek, ben tak ediyorum e animasyonunuz, completed işlevinin .under işlevini çağırır ve onu ilk animasyonunuza paralel olarak adlandırır.

https://jsfiddle.net/zddzvxLy/10/

+0

Üzgünüm, çok kod daha anlaşılır olacaktır altına lol her şeyi değiştirmek istediğini ve bir cevapsız. Her neyse, dur (gerçek, doğru) sorunu çözmez. – Argus

+0

Örneğimde (kemanınızın 10. düzeltmesi), sorun artık devam etmiyor. – Dutchie432

+0

Sorun çözülmüş gibi görünüyor. Teşekkür ederim. Bu cevabı bana izin verir vermez kabul edeceğim. Durmanın belgelerini kontrol ettim ve bu şimdi netleşti. .stop ([clearQueue] [, jumpToEnd]) Teşekkürler! – Argus

0

kaçının eleman zaten animasyonlu edilirken animate() çağırarak:. Öncelikle

if ($('.content').is(':animated') === false) 
{ 
    // animate 
} 
else 
{ 
    return false; 
}