Javascript 如何建立一个;设置超时“;对于jQuery函数是否正确?

Javascript 如何建立一个;设置超时“;对于jQuery函数是否正确?,javascript,jquery,Javascript,Jquery,我希望能得到一些帮助。我对Jquery和JavaScript还不熟悉,我被一个“setTimeout”函数卡住了。 我正在处理我的导航栏,基本上我需要一个div(子菜单)在“单击”锚定标记时淡入,如果将鼠标移动到其他导航链接时淡出,如果鼠标离开,则将其全部隐藏:如是: 单击时显示,但几秒钟后隐藏 在鼠标离开div后隐藏if 到目前为止,我得到的是: $("a").click(function() { $("#sub_nav").fadeIn(400); }); $("#sub_nav"

我希望能得到一些帮助。我对Jquery和JavaScript还不熟悉,我被一个“setTimeout”函数卡住了。 我正在处理我的导航栏,基本上我需要一个div(子菜单)在“单击”锚定标记时淡入,如果将鼠标移动到其他导航链接时淡出,如果鼠标离开,则将其全部隐藏:如是:

  • 单击时显示,但几秒钟后隐藏

  • 在鼠标离开div后隐藏if

  • 到目前为止,我得到的是:

    $("a").click(function() {
        $("#sub_nav").fadeIn(400);
    });
    
    $("#sub_nav").mouseleave(function() {
        $(this).fadeOut(0);
    });
    
    $("#sub_nav").mouseenter(function() {
        if(this) {
            $(this).show(0);
        } else {
            setTimeout(function() {
                $(this).fadeOut(0);
            }, 2000);
        };
    });
    
    设置超时
    外,它按预期工作

    感谢所有能给我的帮助

    $("#sub_nav").mouseenter(function() {
        if ( !$(this).is(':animated') ) {
            var el = this;
            setTimeout(function() {
                $(el).fadeOut(0);
            }, 2000);
        }
    });
    
    函数范围内的“this”是“window”对象,您需要保存对元素的引用


    我删除了你的if(this),因为它的计算结果总是为true,我不确定你是否正在调试,但如果它不是正确的解决方案,你可能可以用它作为例子。

    我认为如果(this)是假的话,我不认为它是假的。谢谢Meder,我不希望这么快得到答案。我试过你的建议,但似乎没有达到我的要求。我也没有试着调试它。我会尽量解释得更好。如果单击链接,则子菜单将淡入,如果鼠标进入子菜单,则子菜单将保持显示状态,否则,子菜单将在几秒钟后淡出。或者鼠标进入子菜单并在离开时淡出。这就是为什么我尝试了“如果”的说法。有什么想法吗?谢谢-描述有点混乱,但是我在我的代码周围添加了一个if,所以如果它没有被设置动画(来自fadeIn),它就会消失。我甚至不确定我的逻辑在这一点上是否正确,你有一个可以在jsbin.com上抛出的例子吗?对不起,我有时很难用语言来表达。如果需要,您可以在此处查看:,如果单击“发布”,子菜单将显示。即使我不得不想些别的事情,我也很感谢你的帮助。对不起,我不知道你所说的jsbin.com是什么意思。我真丢脸!这是可行的,虽然我有点太困了,但您可能可以使用
    :动画的
    选择器,引用元素
    .is
    ,可能还有
    .data
    ,我在示例中使用了该选择器(后一个除外)。