2011-08-19 92 views
0

我創建了一個按鈕,我想要做的是當我將它懸停時,一個菜單用動畫切換出來。但是當我將光標移動到菜單上時,菜單切換回來,因爲它現在讀取光標不再懸停在按鈕上。我嘗試使用「e.preventDefault();」,它停止菜單切換回來,但所有的動畫似乎都取消了。jquery幫助切換菜單

下面是代碼:

$("#logoSmall").hover(function(){ 
     //e.preventDefault(); 
     $("#safety_nav").toggle(function(){ 


      $(this).animate({top: '40px', opacity:'1'}, function(){ 
       $(this).hover(function(){ 
         //I don't know what to put here. 
        }); 
      }); 
     }); 

    }); 

請幫幫忙!我錯過了什麼?我在這裏做錯了什麼?

謝謝

+0

菜單顯示在頁面上?你有HTML還是(更好)還有一個我們可以看到的[JSFiddle](http://jsfiddle.net/)? – sdleihssirhc

+0

對不起,在這裏...請看看jsfiddle.net/rRbWz/11 – minhtu

回答

0

jQuery's API documentaion,撥動不能拿一個功能,因爲它是第一個參數。你必須先指定的持續時間:

$("#safety_nav").toggle(500, function(){... 
+0

所以你的意思是加上持續時間,它會解決問題嗎? – minhtu

+0

@minhtu由於您沒有向我們展示任何HTML,我無法對此發表評論。但是,嘿,你爲什麼不嘗試呢? –

+0

對不起,在這裏...請看看http://jsfiddle.net/rRbWz/11/ – minhtu

0

,因爲它是家庭作業,我傾向於給予意見,而不是代碼:-)

這不是一個代碼問題不亞於規劃 - 按鈕是彈出菜單的觸發器,但您需要測試鼠標是否位於菜單div或按鈕上方。您尋找的行爲更多的是UI策略而不是單一的答案。

你可以採取的一種方法是綁定按鈕懸停在上面,但是使按鈕或#safety_nav上的鼠標無論是否重新隱藏div都是鼠標。

此外,您可能希望添加一種行爲,其中任何菜單激活都會取消激活其他菜單,並且用戶在菜單div外部單擊時隱藏所有菜單(作爲回退行爲,以防瀏覽器在報告鼠標懸停/ out condition)

祝你好運!

+0

我假設你想通了,但如果沒有,看看這個頁面上的底部演示:[link] http://api.jquery.com/mouseout/ –

+0

對不起,我的意思是把你送到鼠標離開 - 演示是相同的(但它解釋了爲什麼你應該使用鼠標離開不鼠標):http:// api。 jquery.com/mouseleave/ 請參閱http://jsfiddle.net/hanleybrand/rRbWz/30/(編輯你的小提琴) –

+0

另外,我注意到鼠標進入/離開行爲在jsfiddle裏面有些詭異,所以你不妨看看http://jsfiddle.net/hanleybrand/rRbWz/30/show/以獲得更好的感覺 - 這不是完美的,但它正在走向你需要去的地方 –