两个jQuery事件未同步
我使用jQuery应用slideDown和slideUp事件 我有一个复选框和两个div(两个jQuery事件未同步,jquery,Jquery,我使用jQuery应用slideDown和slideUp事件 我有一个复选框和两个div(myDiv1和myDiv2)。该复选框激活两个div以向下或向上滑动。所以两者都必须向上或向下(不是一个向下,另一个向上) 但如果在一个div向下滑动之前快速单击复选框两次,另一个div就会向上滑动。然后一个div向上,另一个向下 $("#myCheckbox").click(function() { if ($("#myCheckbox").is(":checked")) { // Now is
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,如果他们快速点击三次,它将只运行第一个动画,因为第二次和第三次点击将相互抵消
如果有帮助,我将添加一些代码请包括所有相关代码,可能不带“何时”就可以尝试,只需向下或向上滑动即可。完成