Javascript 在mmenu中选择所有直接父列表项

Javascript 在mmenu中选择所有直接父列表项,javascript,jquery,html,css,mmenu,Javascript,Jquery,Html,Css,Mmenu,我正在从事一个项目,即将使用jQuery插件mmenu() 我已经做了一些定制,以满足我的需要,但我不知道如何处理我目前的问题。在mmenu中,当我单击一个列表条目时,我将被导航到给定的href,并且被单击的条目将被mmenus css类“.mm selected”激活。到目前为止还不错 现在,我想另外将父列表项(即父项,依此类推,直到菜单根)标记为选中。这应该是这样的,当用户在菜单中上升一级时,他应该能够看到他目前在哪个类别中 下面是应用mmenu后的菜单html结构示例。这显示了包含4个主

我正在从事一个项目,即将使用jQuery插件mmenu()

我已经做了一些定制,以满足我的需要,但我不知道如何处理我目前的问题。在mmenu中,当我单击一个列表条目时,我将被导航到给定的href,并且被单击的条目将被mmenus css类“.mm selected”激活。到目前为止还不错

现在,我想另外将父列表项(即父项,依此类推,直到菜单根)标记为选中。这应该是这样的,当用户在菜单中上升一级时,他应该能够看到他目前在哪个类别中

下面是应用mmenu后的菜单html结构示例。这显示了包含4个主页(索引、第1页、第2页和第3页)和3个子页(2.1、2.2、2.3)的菜单的代码


  • 第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);
    }
};