如何使用Jquery下拉菜单延迟隐藏菜单?

时间:2010-06-03 13:55:38

标签: jquery menu drop-down-menu delay settimeout

我有一个工作正常的下拉菜单,但我希望如此,如果我将鼠标悬停在菜单上,它不会立即再次隐藏。所以基本上我想要一秒钟的延迟。

我已经阅读过有关setTimeout的内容,但不确定它是否是我需要的内容?

$('#mainnav a').bind('mouseover', function()
{
    $(this).parents('li').children('ul').show();
});

$('#mainnav a').bind('mouseout', function()
{
    $(this).parents('li').children('ul').hide();
});

3 个答案:

答案 0 :(得分:3)

setTimeout正是您所需要的。

$('#mainnav a').bind('mouseout', function()
{
    var menu = this;
    setTimeout(function()
    {
        $(menu).parents('li').children('ul').hide();
    }, 1000);
});

答案 1 :(得分:1)

对于mouseout,我会在hide()调用之前添加一个链式动画:

$('#mainnav a').bind('mouseout', function()
{
    $(this).parents('li').children('ul').animate({opacity:0.99}, 2000).hide();
});

会延迟2秒。

答案 2 :(得分:0)

指定“slow”作为要显示和隐藏的参数。来自JQuery Docs

$('#mainnav a').bind('mouseover', function()
{
    $(this).parents('li').children('ul').show("slow");
});

$('#mainnav a').bind('mouseout', function()
{
    $(this).parents('li').children('ul').hide("slow");
});