jQuery正在尝试停止新的悬停运行,直到上一个悬停结束

jQuery正在尝试停止新的悬停运行,直到上一个悬停结束,jquery,slidedown,jquery-hover,Jquery,Slidedown,Jquery Hover,当前,下面我的jQuery代码在其父菜单悬停时打开和关闭子菜单。但我唯一的问题是,当我将鼠标移到另一个顶级项目上时,打开的子菜单开始关闭,我现在悬停的项目的子菜单开始向下滑动,因此有两个子菜单部分打开 我如何才能做到只有在前一个子菜单关闭后才能打开新子菜单?理想情况下,我想要的效果是 您可以向当前活动的子菜单添加一个类,以防止另一个子菜单触发。在回调时删除该类。请查看此代码。它将完成延迟的动画并删除重复的动画 var still; $('#test').hover(functi

当前,下面我的jQuery代码在其父菜单悬停时打开和关闭子菜单。但我唯一的问题是,当我将鼠标移到另一个顶级项目上时,打开的子菜单开始关闭,我现在悬停的项目的子菜单开始向下滑动,因此有两个子菜单部分打开

我如何才能做到只有在前一个子菜单关闭后才能打开新子菜单?理想情况下,我想要的效果是


您可以向当前活动的子菜单添加一个类,以防止另一个子菜单触发。在回调时删除该类。

请查看此代码。它将完成延迟的动画并删除重复的动画

    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 () {

        });
    });