2013-05-12 117 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

相關問題