2017-09-22 52 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秒的延迟,然后检查它是否正在运行,继续这样做直到它当前没有运行,然后执行。如果它当前正在运行,并且第二次执行当前正在检查它可以运行的时间,则取消第二次执行。阿卡,如果他们三击快,它只会运行第一动画作为第二和第三点击会相互抵消

我会添加一些代码,如果它有助于