我正在使用jQuery的mmenu插件 - http://mmenu.frebsite.nl/
我遇到的问题是,当我最初打开菜单时,我希望它跳转到具有与当前面包屑最匹配的条目的页面。找到元素不是问题。例如
Vehicles
Land
Cars
Trains
Water
Dingies
我找到了想要显示的项目,然后触发(“open.mm”)。
因此,如果我尝试打开“Land”页面,它就可以了。它将“车辆”设置为打开,我在汽车和火车的页面。
但是如果我尝试直接打开Cars页面,那么没有任何反应。它在Land和Cars上设置样式,但车辆页面仍然是显示的样式。
直接跳到第3级页面的诀窍是什么?
答案 0 :(得分:0)
我想出了一个解决方法。我在菜单中找到了我要打开的项目,然后沿菜单树向上走,记录沿途的所有节点,在堆栈中重新编码。我想从堆栈中按顺序打开每个菜单,一直到我打算打开的菜单。页面有一些可见的滚动,但确实有效。
// Walk up and build a stack of menu items to open
var menuToShow: JQuery = this.sideMenu.find("a[href='" + bestUrlMatch + "']").closest("ul");
var menusToShow: JQuery[] = [];
do {
menusToShow.push(menuToShow);
var linkToParent = menuToShow.find("a.mm-subclose");
menuToShow = null;
if (linkToParent.length) {
var parentId = linkToParent.attr("href");
menuToShow = this.sideMenu.find(parentId);
if (menusToShow.length == 0) {
menusToShow = null;
}
}
} while (menuToShow != null)
// Open the menu items starting from the root
do {
menuToShow = menusToShow.pop();
menuToShow.trigger("open.mm");
} while (menusToShow.length > 0)
请注意,我只需要在页面上首次打开菜单时执行此操作。如果已经选择了另一个子菜单,我不确定它是否会起作用。
答案 1 :(得分:0)
该插件会自动检测具有“已选定”类的最深的LI,因此只需将该类添加到LI即可:
<ul>
<li>
<a>Vehicles</a>
<ul>
<li>
<a>Land</a>
<ul>
<li class="Selected"><a>Cars</a></li>
</ul>
</li>
</ul>
</li>
</ul>
在下载包中有“水平子菜单”示例页面,它具有类似的设置。
我同意插件在打开子菜单时应该打开所有“父”菜单,但是现在我觉得这是最好的解决方案。