1

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

我已阅读有关 setTimeout 的信息,但不确定它是否是我需要的?

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

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

3 回答 3

3

setTimeout正是您所需要的。

$('#mainnav a').bind('mouseout', function()
{
    var menu = this;
    setTimeout(function()
    {
        $(menu).parents('li').children('ul').hide();
    }, 1000);
});
于 2010-06-03T13:59:43.080 回答
1

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

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

这将延迟 2 秒。

于 2010-06-03T14:00:27.837 回答
0

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

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

$('#mainnav a').bind('mouseout', function()
{
    $(this).parents('li').children('ul').hide("slow");
});
于 2010-06-03T13:59:21.547 回答