在动画结束之前,如何防止在JQuery中单击以执行操作?
关于我试图用JQuery创建的函数,我有一个小问题 我有一个有9个选项卡的菜单,每当鼠标越过其中一个选项卡时,菜单就会向下滑动(使用JQuery中的slideUp()和slideDown()),如果用户单击其中一个选项卡,其菜单就会保持静止,当鼠标移过时会向上滑动 我的问题是,每当我在选项卡的菜单仍在向下滑动时单击该选项卡时,该菜单将停止扩展到其原始高度。我想知道的是,如果在菜单仍在向下滑动时单击,如何使选项卡处于非活动状态,而不执行任何操作在动画结束之前,如何防止在JQuery中单击以执行操作?,jquery,html,Jquery,Html,关于我试图用JQuery创建的函数,我有一个小问题 我有一个有9个选项卡的菜单,每当鼠标越过其中一个选项卡时,菜单就会向下滑动(使用JQuery中的slideUp()和slideDown()),如果用户单击其中一个选项卡,其菜单就会保持静止,当鼠标移过时会向上滑动 我的问题是,每当我在选项卡的菜单仍在向下滑动时单击该选项卡时,该菜单将停止扩展到其原始高度。我想知道的是,如果在菜单仍在向下滑动时单击,如何使选项卡处于非活动状态,而不执行任何操作 提前感谢您可以创建一个布尔变量设置动画,当选项卡系统
提前感谢您可以创建一个布尔变量
设置动画
,当选项卡系统的任何部分设置动画时,该变量为true
。然后在单击时检查其值
设置值
如果可以同时设置多个选项卡的动画,则需要为每个选项卡创建一个单独的动画
布尔值,在动画开始时将它们设置为true
,在回调中设置为false
。这里我使用了一个关联数组:
animating['Tab1'] = true;
$tab1.animate({...}, 1000, function() {
animating['Tab1'] = false;
});
检查值
然后,在任何时间点,您都可以通过评估所有单个布尔值来评估选项卡系统的任何部分是否正在制作动画:
function isAnimating() {
for (var tab in animating) {
if (animating[tab])
return true;
}
return false;
}
禁用单击
然后将单击事件绑定到选项卡系统,并在选项卡系统为动画时阻止默认操作:
$tabs.click(function(e) {
if (isAnimating) {
e.preventDefault();
}
});
jQuery选择器
:animated
将只保留当前正在设置动画的元素。使用此选项,您可以检查选项卡系统中可设置动画的部分是否在单击事件时设置动画:
$tabs.click(function(e) {
if ($tabs.is(':animated'))
e.preventDefault();
});