子菜单功能,超时所需的帮助

时间:2010-09-14 10:45:39

标签: jquery timeout hover delay

我正在使用此菜单上的Intranet系统。我有一个部分工作的菜单系统。

我已将代码添加到此处:http://jsbin.com/eloxe3/8

浅灰色背景的菜单项有一个子菜单......而其他菜单项没有。在我将鼠标悬停在没有子菜单的链接1秒后,我需要一些帮助才能使子菜单消失。

我有这个功能,显示子菜单...&希望新代码遵循类似的原则

$(".menu-arrow").hover(function(){
    $.data(this, "timer", setTimeout($.proxy(function() {
       $(this).click();
   },this),500));
},function(){
    clearTimeout($.data(this, "timer"));
});

...(对不起,这个内联网的用户是新手......以防他们偶然翻转一个链接)

任何帮助都非常感谢,谢谢

2 个答案:

答案 0 :(得分:0)

查看源代码,您应该将no-submenu与悬停状态绑定。

$('.no-submenu').bind('mouseenter',function(){
    //at this point the mouse is over a link with no submenu.
    //So we close all submenus
    $('.rtmenu').hide().delay(1000);
})

我不确定天气延迟适用于hide但您可以试一试,如果没有,请尝试以下方法:

$('.no-submenu').bind('mouseenter',function(){
    //at this point the mouse is over a link with no submenu.
    //So we close all submenus

    var T = setTimeout(function(){
         $('.rtmenu').hide();
         clearTimeout(T);
    },1000)
});

我可能错了,但无论如何你都可以给它一个旋转。

clearTimeout

的小更新

尝试一下这一行:

var _TimeOut;
$('.no-submenu').hover(,function(){
    var _TimeOut = setTimeout(function(){$('.rtmenu').hide();},1000)
},function(){
    clearTimeout(_TimeOut);
});

不是$('.rtmenu').hide()可能需要$('.level2').hide()而你可能更善于与.css('display','none')具体相关

悬停式文档位于此处:http://api.jquery.com/hover/

答案 1 :(得分:0)

看看hoverIntent plugin。仅当光标悬停在元素上时才触发。

var hideSubmenus = function () {
    $('.rtmenu').hide()
};

$(".no-submenu").hoverIntent({
    over: hideSubmenus,
    out: function () { /* do nothing */ }
});

这样,如果子菜单意外地将光标移出菜单然后再快速返回,则子菜单不会被隐藏,这通常是我体验中子菜单的问题。