2009-08-21 131 views
0

所以我使用jQuery的.hover功能..但即時通訊有一個小問題。當你將鼠標移動到他們身上的時候,下拉棒和不要隱藏(ff3)。如果前一個函數沒有完成slideDown,它似乎正在跳過鼠標移出功能。有任何解決這個問題的方法嗎?jquery下拉菜單粘貼

繼承人的試驗場:http://vasoshield.xcsit.com/index.html

的JavaScript:爲

$(document).ready(function() { 
    $('#mainNav ul li').hover( 
     function() { 
      $(this).find('ul').slideDown(500); 
     }, 
     function() { 
      $(this).find('ul').hide(0); 
     } 
    );  
}); 

菜單HTML

<div id="mainNav"> 
    <ul> 
     <li class="requestInfoLink"> 
      <a href="#">Request Info</a> 
      <ul> 
       <li><a href="#">Ordering</a></li> 
       <li class="last"><a href="#">Contact Us</a></li> 
      </ul> 
     </li> 

     <li class="newsLink"> 
      <a href="#">News</a> 
      <ul> 
       <li class="last"><a href="#">Press Release</a></li> 
      </ul> 
     </li> 
     <li class="productLink"> 
      <a href="#">Product</a> 
      <ul> 
       <li><a href="#">Overview</a></li> 
       <li><a href="#">Physician</a></li> 
       <li class="last"><a href="#">Patient</a></li> 
      </ul> 
     </li>    

    </ul> 
</div> 
+0

我在看這個時看不到任何問題。 – 2009-08-21 18:13:55

+0

沒關係,我看到3.5 – 2009-08-21 18:15:06

+0

中的問題必須將鼠標從導航的一側移動到另一側,並且它應該堅持下去。 – Roeland 2009-08-21 18:27:25

回答

0

試着隱藏他們的$(document)中。就緒開始。

如果不是,那麼爲什麼不嘗試.slideToggle()

我敢肯定,這小東西又啞。只是嘗試不同的事情。儘管我會嘗試使用.slideToggle()。或只是.toggle()

編輯: 我不認爲瀏覽器喜歡懸停的其他函數()。

嘗試在模糊事件向上滑動的位置。應該使更光滑更美觀的結果。

+0

即時通訊不知道爲什麼隱藏它在$(document).ready將解決的事情。這隻會被稱爲一次正確的? – Roeland 2009-08-21 18:28:29

+0

是的,但同時。如果它始終處於隱藏狀態(使用document.ready),那麼當您沒有將它懸停時,它應該被隱藏。 – 2009-08-21 18:30:42

+0

做slideUp()而不是hide()修復了問題 – Roeland 2009-08-21 18:31:00

0

其實我有一個更好的工作的解決方案:

$(document).ready(function() { 
$('#mainNav ul li').hover( 
    function() { 
      $(this).find('ul').slideDown(500); 
    }, 
    function() { 
      $(this).find('ul').stop(false,true).hide(0); 
    } 
);   

});

因此,在鼠標移出時,它會自動停止動畫。 STOP有兩個參數,其中一個清除所有動畫隊列(不需要),另一個則直接跳到動畫結尾。在這種情況下,您想直接跳到動畫的結尾並關閉它。這應該刪除所有的問題!