2013-03-06 50 views
1

我正在使用Jquery UI「菜單」API在應用程序中創建導航菜單。Jquery UI 1.9菜單 - 你如何保持活動的菜單項被加亮?

菜單繪製並鏈接良好,當它懸停在上面時,自然的jquery ui css被應用,給予懸停的元素ui-state-focus類。將鼠標移出元素時,它將刪除此類,該元素將使元素處於默認未加亮狀態。

我已經嘗試添加標準的jQuery UI的css類「ui-state-active」,它將特定的CSS應用到給定此類的菜單中的元素。但是,當懸停任何其他元素時,這個ui-state-active類將從活動元素中移除,有效地使懸停殺死活動選擇,即使尚未創建新選擇(通過單擊)。

我希望能夠保持懸停類的添加,但保持ACTIVE類不變,以便在每個頁面上,活動菜單元素將始終具有活動類。

正確的方式來標記jQuery UI菜單API中活動的元素的任何想法?

回答

4

我會建議爲選定的項目創建一個單獨的類(您可以複製現有的UI狀態活動並將其重命名爲類似選定的東西),然後:。

$("#menu").find("a").click(function(){ 
    $("#menu").find("a").removeClass("selected");//remove if something was selected 
    $(this).addClass("selected");//add a selected class 
    }); 

希望幫助

+0

熱鬧。我只是在你回答時做了這個。我創建了一個完全不同的類,它不存在於JQ UI中,因此JQ UI Menu API不會將其刪除。 – Rimer 2013-03-06 06:37:40

0
jQuery.widget("ui.menu", jQuery.ui.menu, { 
    blur: function(event, fromFocus) { 
     if (event && event.type === "mouseout")) 
      return this; 
     else 
      return this._super(event, fromFocus); 
    } 
}); 

只能用jQuery> = 1.9

+0

對不起,也許我誤解了這個問題。我正在努力失去焦點不結束^ ^我讀了它後,我注意到也許你正在考慮結束^^ – 2014-06-17 09:49:07

+0

嘗試這種方式:\t \t \t \t \t if((event === undefined && fromFocus === undefined) ||(event && event.type ===「mouseout」)) – 2014-06-17 10:13:27