jQuery正在尝试停止新的悬停运行,直到上一个悬停结束
当前,下面我的jQuery代码在其父菜单悬停时打开和关闭子菜单。但我唯一的问题是,当我将鼠标移到另一个顶级项目上时,打开的子菜单开始关闭,我现在悬停的项目的子菜单开始向下滑动,因此有两个子菜单部分打开 我如何才能做到只有在前一个子菜单关闭后才能打开新子菜单?理想情况下,我想要的效果是jQuery正在尝试停止新的悬停运行,直到上一个悬停结束,jquery,slidedown,jquery-hover,Jquery,Slidedown,Jquery Hover,当前,下面我的jQuery代码在其父菜单悬停时打开和关闭子菜单。但我唯一的问题是,当我将鼠标移到另一个顶级项目上时,打开的子菜单开始关闭,我现在悬停的项目的子菜单开始向下滑动,因此有两个子菜单部分打开 我如何才能做到只有在前一个子菜单关闭后才能打开新子菜单?理想情况下,我想要的效果是 您可以向当前活动的子菜单添加一个类,以防止另一个子菜单触发。在回调时删除该类。请查看此代码。它将完成延迟的动画并删除重复的动画 var still; $('#test').hover(functi
您可以向当前活动的子菜单添加一个类,以防止另一个子菜单触发。在回调时删除该类。请查看此代码。它将完成延迟的动画并删除重复的动画
var still;
$('#test').hover(function () {
var that = $(this);
if (!still) {
still = true;
window.setTimeout(function () {
if (still) {
that.animate({
'width': 200
}, 100, function () {
still = false;
});
}
}, 100);
}
}, function () {
still = false;
$(this).animate({
'width': 100
}, function () {
});
});
Check我曾经遇到过类似的问题,并通过在动画结束时使用一个从零变为一的活动变量来修复该问题。当然还有一个if语句,它检查活动变量是否具有非活动值。你的想法对吗?
var still;
$('#test').hover(function () {
var that = $(this);
if (!still) {
still = true;
window.setTimeout(function () {
if (still) {
that.animate({
'width': 200
}, 100, function () {
still = false;
});
}
}, 100);
}
}, function () {
still = false;
$(this).animate({
'width': 100
}, function () {
});
});