0

下面的代码基本上是我想做的,我理解是不正确的代码。

所以对于下拉菜单,我想延迟隐藏它。问题是,当我在隐藏延迟完成之前将鼠标悬停在另一个菜单项上时,它会覆盖下一个handlerIn.

那么有没有一种简单的方法来清除setTimeout下一个队列hover()

同样,下面的错误代码仅用于解释。

$('nav > ul > li').hover(function() {
    clearTimeout(menuHide);
    $(this).find('ul').show();
}, function() {
    var menuHide = setTimeout(function() {
        $(this).find('ul').hide();
    }, 150);
});

更新:似乎clearInterval()不是我想要的,因为我仍然想让它完成,而不是中止它。

completeInterval()没有机会?:)

4

2 回答 2

1

目前,您的悬停事件没有引用,menuHide因此必须事先声明。

var menuHide;

$('nav > ul > li').hover(function() {
    clearTimeout(menuHide);
    $(this).find('ul').show();
}, function() {
    menuHide = setTimeout(function() {
        $(this).find('ul').hide();
    }, 150);
});

编辑

在评论部分进行了一些合作之后,我们确定将代码放在方法的完整部分中是可行的animate方法:

.animate( properties [, duration ] [, easing ] [, complete ] )

于 2013-02-06T22:03:59.417 回答
0

menuHide一个全局变量。

于 2013-02-06T22:01:29.200 回答