2011-09-04 33 views
0

我用下面這個簡單的代碼,以使一個下拉菜單:JQuery的.hover有記憶

jQuery("#navigation li").hover(
    function(){jQuery(this).children("ul").slideToggle("fast");}, 
    function(){jQuery(this).children("ul").slideToggle("fast"); 
}); 

然而,當我在#naviagtion li多次盤旋真的很快,它會保持slideToggling倍等量。你怎麼阻止這樣做。

我在代碼中弄到了一些標誌(isSliding),看看它是否正在切換,但是當我使用它時它看起來真的很麻煩。 (我設置標誌之前就開始滑動,並在回調,我再次設置標記,以虛假的,之前我調用的函數,我只是有一個if(isSliding)聲明

例:http://jsfiddle.net/8KxCd/2/

回答

6

使用.stop()

http://jsfiddle.net/genesis/8KxCd/4/

jQuery("#navigation li").hover(

function() { 

    jQuery(this).children("ul").stop(true, true).slideToggle("fast"); 
}, function() { 
    jQuery(this).children("ul").stop(true, true).slideToggle("fast"); 

}); 
+0

真棒非常乾淨簡單的解決方案:d –

+0

嘿沒有的xD我不能因爲你是如此的超級快! –