2013-05-12 79 views
0

使用的setTimeout我有以下几点:中的mouseenter和鼠标离开事件

$("#header .navigation li.menu-item-first a").mouseenter(function() { 
    $(".sub-nav").css("display", "block"); 
}).mouseleave(function() { 
    $(".sub-nav").css("display", "none"); 
}); 

我不想.sub-nav尽快消失,当用户移动鼠标了。 我如何将setTimeout整合到这些中?

+3

...?你试过了吗? – JJJ 2013-05-12 14:43:46

回答

2

也有办法做它用delay()

$("#header .navigation li.menu-item-first a").mouseenter(function() { 
    $(".sub-nav").stop(true).css("display", "block"); //stop "animation" and clear queue 
}).mouseleave(function() { 
    $(".sub-nav").delay(1000).fadeOut(1); 
}); 

demo of usage

1
$("#header .navigation li.menu-item-first a").mouseenter(function() { 
    $(".sub-nav").css("display", "block"); 
}).mouseleave(function() { 
    window.setTimeout(function() { 
     $(".sub-nav").css("display", "none"); 
    }, 1000); 
}); 

也许吧?

+1

您希望'mouseenter'处理程序取消该超时(如果存在),否则如果用户将鼠标移出(跳过超时),然后在1秒内返回(或任何'setTimeout'延迟),则菜单会再次显示'mouseenter'处理程序(即使它已经显示),但是当超时解决时即使用菜单上的鼠标也会隐藏。 – ajp15243 2013-05-12 14:52:38

相关问题