2017-09-22 14 views
0

私はjQueryを使用してslideDownslideUpイベントを使用しています。2つのjQueryイベントが同期化されていません

私はチェックボックスと2 のdivmyDiv1myDiv2)を持っています。チェックボックスをオンにすると、両方のdivが下にスライドしたり上にスライドしたりします。だから両方が上下になければならない

しかし、1つのdivが下にスライドする前にチェックボックスを2回すばやくクリックすると、他のdivが上にスライドします。それで1つのdivが上になり、もう一方のdivが下になります。

$("#myCheckbox").click(function() { 
    if ($("#myCheckbox").is(":checked")) { // Now is checked. 
     $.when($("#myDiv2").slideDown(slow)).done(function() { 
      $("#myDiv1").slideDown(slow); 
     }); 
    } 
    else { // Now is unchecked. 
     $.when($("#myDiv2").slideUp(slow)).done(function() { 
      $("#myDiv1").slideUp(slow)) 
     }); 
    } 
} 
+2

を助け場合、私はいくつかのコードを追加します関連するすべてのコードたぶん –

+0

を記載してください"いつ"なしで試してみましょう。 –

答えて

1

回答1.無効にするチェックボックスまたは実行からコードを停止し、これらのアニメーションが現在実行している場合

回答2.代わりに、直接slideUpまたはslideDownを呼び出すのでは、各アニメーションのための内蔵のキューを持っているので、それ以外の場合は配列に「slideUp」または「slideDown」を追加してキューとして動作させます。必要に応じて、待ち行列をチェックして、必要なときに必要なslideUpまたはslideDownを実行して、何らかの種類のガミュロップまたはタイミングシステムを使用します。

Answer 3.機能が現在動作している場合は、0.1秒の遅延を加え、現在実行中であることを確認してください。現在実行されていない状態になるまで、実行してから実行してください。現在実行中で、2回目の実行で現在実行可能な時間がチェックされている場合は、2回目の実行をキャンセルします。彼らはすぐにクリックを3倍ならば別名は、それだけで2番目と3番目のクリックなどの最初のアニメーションを実行します

を互いに相殺されます、それは

関連する問題