两个jQuery事件未同步

两个jQuery事件未同步,jquery,Jquery,我使用jQuery应用slideDown和slideUp事件 我有一个复选框和两个div(myDiv1和myDiv2)。该复选框激活两个div以向下或向上滑动。所以两者都必须向上或向下(不是一个向下,另一个向上) 但如果在一个div向下滑动之前快速单击复选框两次,另一个div就会向上滑动。然后一个div向上,另一个向下 $("#myCheckbox").click(function() { if ($("#myCheckbox").is(":checked")) { // Now is

我使用jQuery应用slideDownslideUp事件

我有一个复选框和两个div
myDiv1
myDiv2
)。该复选框激活两个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))
        });
    }
}

答复1。如果这些动画当前正在运行,请禁用复选框或停止代码的执行

答复2。为每个动画内置一个队列,因此,与其直接对任何对象调用slideUp或slideDown,不如将“slideUp”或“slideDown”添加到数组中作为队列。让队列自行检查,并在需要时使用某种gameloop或计时系统运行所需的slideUp或slideDown

答复3。如果函数当前正在运行,则添加0.1秒延迟,然后检查它当前是否正在运行,继续执行,直到它当前未运行,然后执行。如果它当前正在运行,并且第二次执行正在检查它何时可以运行,则取消第二次执行。Aka,如果他们快速点击三次,它将只运行第一个动画,因为第二次和第三次点击将相互抵消


如果有帮助,我将添加一些代码

请包括所有相关代码,可能不带“何时”就可以尝试,只需向下或向上滑动即可。完成