2014-01-08 140 views
0

我有一個li菜單我正在使用,當一個div懸停在子菜單上滑落在右側。然後當div不再被盤旋時,它就像你期望的那樣下滑。然而,似乎有一個問題,如果鼠標懸停到另一個div,而最後一個仍然向上滑動,則最後一個不會完成關閉,並且2個子菜單​​將打開。如果我慢慢地移動鼠標或將滑動速度更改爲0,那麼它可以工作,但如果可以的話,我想要有滑動動畫。jquery菜單滑動太慢?

這裏的懸停功能:

$(listitem).hover(

    function() { 

    listID = $(this).find("ul"); 
     $(listID).slideDown('medium',function() { 
    $(this).clearQueue(); 
}); 

    }, 
    function() { 
    listID = $(this).find("ul"); 
     $(listID).slideUp(0,function() { 
    $(this).clearQueue(); 
}); 

    }); 

);

http://mayaincaaztec.com/

相反張貼jfiddle的,U可以看看我工作的網站。如果需要一個jfiddle,我會拋出一個。如果將鼠標懸停在「Maya Inca Aztec Agriculture」選項卡上,菜單將會下降。接下來的3個標籤也會這樣做。如果將鼠標從一個標籤快速移動到另一個標籤,則前一個將保持打開狀態。那是想什麼我解決

+2

我認爲一個(不)工作[JSFiddle](http://jsfiddle.net/)會很棒:),所以我們可以看到最新的錯誤和(可能)解決問題。 – Eich

+0

好吧,我會發佈一個jfiddle,當我得到它運行.. –

+0

jquery上真的有一個''medium''持續時間?上次我檢查有效的持續時間字符串是「慢」和「快」。除此之外(或隨機字符串值),jquery會給它默認的400ms。 –

回答

1

如果到slideDown()呼叫前slideUp()完成,該電話以clearQueue()從隊列中刪除slideDown(),所以元素仍然可見。你想要做的是在你開始下一個,這樣才停止動畫:

$(listitem).hover(function() { 
    $($(this).find("ul")).stop().slideDown('medium'); 
}, function() { 
    $($(this).find("ul")).stop().slideUp(0); 
}); 

但是,如果你真的想slideUp(0),你也可以同樣使用.hide()

+0

我在你的帖子之前發現了這個時刻! .stop解決了這個問題。不管怎麼說,還是要謝謝你 ;) –