2009-07-25 116 views
0

我發現每個jQuery插件都是基於<li>元素來生成菜單項。jQuery自定義菜單

我有一個代表菜單按鈕和另一<div id = "menubutton">元素,而不是相關的(曼寧是不是一個孩子),其中包含菜單項(混合的東西,圖像等)<div id = "menucontent">。我想要第二個,當我點擊按鈕時出現隱藏的div。當我離開按鈕或離開內容div時,它應該隱藏起來,以防我選擇項目或在那裏做東西。

現在,這是我到目前爲止的代碼,但clearTimeout的東西似乎並沒有工作。任何幫助?指出一個插件來幫助我的工作也可以。

謝謝!

 var timer; 

     $('#menubutton').click(function() { 
      $('#menucontent').show(); 
     }); 

     $('#menubutton').mouseout(function() { 
      timer = setTimeout('$("#menucontent").hide()', 500); 
     }); 


     $('#menucontent').mouseover(function() { 
      clearTimeout(timer); 
     }).mouseout(function() { 
      setTimeout('$("#menucontent").hide()', 300); 
     }); 

編輯解決方案

我解決了使用hover insted的鼠標懸停/鼠標移開

+0

爲什麼你會使其工作離開按鈕或內容div?如果你在兩個邊界之間卡住了,那麼這會很煩人,而且狗屎開始無緣無故地消失。一個或另一個,不是兩個。這個腳本是否在錯誤控制檯中拋出任何錯誤? – Sneakyness 2009-07-25 18:17:25

+0

控制檯上沒有錯誤。順便說一句,如果我一個菜單,不要越過它,只是去另一個按鈕,它會保持打開狀態。它只是標準菜單的工作方式,我認爲 – pistacchio 2009-07-25 18:21:27

回答

0

試試這個問題:

$('#menubutton').click(function() { 
     $('#menucontent').show(); 
    }); 

    $('#menubutton').mouseout(function() { 
     $(this).data('myTimer', setTimeout('$("#menucontent").hide()', 500)); 
    }); 

    $('#menucontent').mouseover(function() { 
     clearTimeout($(this).data('myTimer')); 
    }).mouseout(function() { 
     setTimeout('$("#menucontent").hide()', 300); 
    });