2017-09-22 73 views
0

我正在使用jQuery來應用slideDownslideUp事件。兩個jQuery事件不同步

我有一個複選框和兩個DIVmyDiv1myDiv2)。該複選框激活兩個div滑落或向上滑動。所以兩者都必須是向上或向下(不是一個向下,另一個向上)。

但是如果我在一個div完成滑動之前在複選框上快速點擊兩次,另一個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.有內置在每個動畫隊列,因此,而不是直接調用或效果基本show了slideDown在任何情況下,您都可以將「slideUp」或「slideDown」添加到數組中充當隊列。讓隊列檢查自己,並在需要時使用某種gameloop或timing系統運行所需的slideUp或slideDown。

回答3:如果函數當前正在運行,然後添加0.1秒的延遲,然後檢查它是否正在運行,繼續這樣做直到它當前沒有運行,然後執行。如果它當前正在運行,並且第二次執行當前正在檢查它可以運行的時間,則取消第二次執行。阿卡,如果他們三擊快,它只會運行第一動畫作爲第二和第三點擊會相互抵消

我會添加一些代碼,如果它有助於