如何为jQuery函数正确设置“settimeout”?

时间:2009-10-08 04:07:25

标签: javascript jquery

我希望我能得到一些帮助。我是Jquery和JavaScript的新手,我遇到了“setTimeout”函数。 我正在我的导航栏上工作,基本上我需要一个div(子菜单),当点击一个锚标签时淡入,如果你将鼠标移动到另一个导航链接就淡出它并将它们全部隐藏起来老鼠离开它:像这样:

  1. 点击显示但几秒后隐藏

  2. 在鼠标离开div后隐藏。

  3. 这是我到目前为止所得到的:

    $("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);
        };
    });
    

    除了setTimeout以外,它的工作正常。

    感谢我能得到的所有帮助。

1 个答案:

答案 0 :(得分:1)

$("#sub_nav").mouseenter(function() {
    if ( !$(this).is(':animated') ) {
        var el = this;
        setTimeout(function() {
            $(el).fadeOut(0);
        }, 2000);
    }
});

'this'在函数fed的范围内是'window'对象,需要保存对元素的引用。

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