2013-03-06 53 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