2016-03-30 8 views
1

問題は全体的に私が修正したヘッダーがあり、それに応じて移動する必要のあるdivがあることです。 3〜4回のように本当に速くクリックするとアニメーションがうまくいけなくなり、内容の中に「アンダー」のdivが表示されてしまうという問題があります。アニメーションやスライドの前にストップを使用します。私はキューなどを使用してみました..役に立たない。アニメーションのjQueryオーバーラッピング問題

$(".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/

ここで問題を表示jsfiddleです。ヘッダに本当に速いし、「これ1は、コンテンツ内に表示されます」の下でなければならない数回クリックしてみてください要素が既にアニメーション化されているときanimate()を呼び出す

答えて

1

を、あなたはありません持っていますクラス.lolとアイテム - 第二に、第三stop(true, true)

にごstop()通話を変更.under

にそれを変更、私はTAKうあなたのアニメーションは、completed機能のうち.underを呼び出し、最初のアニメーションと並行して呼び出します。

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

+0

申し訳ありませんが、私は、コードをより理解しやすいだろう下に笑からすべてを変更したいと1という逃しました。とにかく、停止(真、真)は問題を解決しません。 – Argus

+0

私の例(あなたのフィドルのリビジョン10)では、問題はもはや解決されません。 – Dutchie432

+0

問題が解決されたように見えます。ありがとうございました。私はそれが許されるとすぐにこの答えを受け入れるでしょう。 私は停止の文書をチェックし、これは今明らかになった。 .stop([clearQueue] [、jumpToEnd]) ありがとう! – Argus

0

避けてください:まず

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