2014-10-11 130 views
0

當訪客鼠標離開菜單時,如何添加延遲以阻止下拉菜單關閉?其中一些菜單很深,所以我不希望菜單偶然關閉某人。導航下拉菜單MouseOut延遲

<div class="menu"> 
    <ul> 
     <li> 
      <a href="#">Home</a> 
     </li> 
    <li> 
     <a href="/products/">Products</a> 
     <ul> 
     <li> 
        <a href="product1">product type</a> 
      <ul> 
      <li> 
       <a href="lin1">product1</a> 
      </li> 
      </ul> 
     </li> 
     <li> 
      <a href="link">product type 2</a> 
      <ul> 
       <li> 
        <a href="link">product2</a> 
       </li> 
      </ul> 
     </li> 
     </ul> 
    </li> 
    <li> 
     <a href="klink">Where To Buy</a> 
     <ul> 
      <li> 
       <a href="link">place1</a> 
      </li> 
     </ul> 
    </li> 
    <li> 
     <a href="link">Contact Us</a> 
    </li> 
    </ul> 
</div> 
+0

[此JS庫](http://cherne.net/brian/resources/jquery.hoverIntent.html)爲您打造。 ;) – mhdrad 2014-10-11 19:17:26

+0

@Mark ...檢查我的答案,看看它是否能解決你的問題... – henser 2014-10-11 23:03:58

回答

0

您可以使用mouseout事件和setTimeout方法。

jsFiddle Demo

$(document).ready(function(){ 

    $('#menu').on('mouseout',function(){ 
     setTimeout(function(){ 
      alert("I'm one second late"); 
     },1000); 
    }); 

}); 

當你懸停#menu什麼都不會發生,但是當你的光標離開菜單就會觸發一個動作(在這種情況下,警報)後1秒(或1000毫秒)。

+0

我很抱歉,但我是一個新手,當涉及到jQuery,我會取代警報功能,以保持菜單打開了嗎? :( – Mark 2014-10-12 16:58:41

+0

請準確描述你想要什麼......我不確定我是否理解這些要求。以一個例子來製作一個JsFiddle ... – henser 2014-10-12 18:11:02

+0

我很抱歉花了這麼長時間才能找到你,但[我用下拉菜單中的HTML/CSS製作了一個JSFiddle](http://jsfiddle.net/thecreativepage/2pkqyp11/)。當用戶嘗試使用下拉菜單並且它們的光標離開了LI時,整個下拉我想打開它一秒鐘左右,所以如果用戶鼠標意外離開,下拉菜單會有很多頁面,所以我可以看到這是一個問題,非常感謝! – Mark 2014-10-24 18:52:06