Javascript 在mmenu中选择所有直接父列表项
我正在从事一个项目,即将使用jQuery插件mmenu() 我已经做了一些定制,以满足我的需要,但我不知道如何处理我目前的问题。在mmenu中,当我单击一个列表条目时,我将被导航到给定的href,并且被单击的条目将被mmenus css类“.mm selected”激活。到目前为止还不错 现在,我想另外将父列表项(即父项,依此类推,直到菜单根)标记为选中。这应该是这样的,当用户在菜单中上升一级时,他应该能够看到他目前在哪个类别中 下面是应用mmenu后的菜单html结构示例。这显示了包含4个主页(索引、第1页、第2页和第3页)和3个子页(2.1、2.2、2.3)的菜单的代码Javascript 在mmenu中选择所有直接父列表项,javascript,jquery,html,css,mmenu,Javascript,Jquery,Html,Css,Mmenu,我正在从事一个项目,即将使用jQuery插件mmenu() 我已经做了一些定制,以满足我的需要,但我不知道如何处理我目前的问题。在mmenu中,当我单击一个列表条目时,我将被导航到给定的href,并且被单击的条目将被mmenus css类“.mm selected”激活。到目前为止还不错 现在,我想另外将父列表项(即父项,依此类推,直到菜单根)标记为选中。这应该是这样的,当用户在菜单中上升一级时,他应该能够看到他目前在哪个类别中 下面是应用mmenu后的菜单html结构示例。这显示了包含4个主
-
-
-
第2页
-
-
-
-
-
如果您知道我在何处以及如何实现这些功能,那就太好了。因此,目前我做了一些jQuery黑客操作。这似乎适用于我上面提到的案例。它还应该适用于更深层的菜单,因为它使用递归。如果有更好的方法,请告诉我
var nav = $("#nav");
nav.find("li > a:not(.mm-subopen)").click(function () {
nav.find("li.active").removeClass("active");
selectParentEntry($(this));
});
var selectParentEntry = function (a) {
var li = a.parent(),
ul = li.parent(),
back = ul.find("li > a.mm-subclose").first(),
cID = "#" + ul.attr("id"),
pID = back.length ? back.attr("href") : null;
li.addClass("active");
if (pID != null) {
var subOpen = nav.find("ul" + pID + " > li > a.mm-subopen").filter(function () {
var self = $(this);
if (self.attr("href") === cID) return self;
}).first();
if (subOpen) selectParentEntry(subOpen);
}
};
给我们html结构。或是一个正在工作的人
var nav = $("#nav");
nav.find("li > a:not(.mm-subopen)").click(function () {
nav.find("li.active").removeClass("active");
selectParentEntry($(this));
});
var selectParentEntry = function (a) {
var li = a.parent(),
ul = li.parent(),
back = ul.find("li > a.mm-subclose").first(),
cID = "#" + ul.attr("id"),
pID = back.length ? back.attr("href") : null;
li.addClass("active");
if (pID != null) {
var subOpen = nav.find("ul" + pID + " > li > a.mm-subopen").filter(function () {
var self = $(this);
if (self.attr("href") === cID) return self;
}).first();
if (subOpen) selectParentEntry(subOpen);
}
};