jquery.mmenu如何直接跳转到子页面

时间:2013-07-25 14:51:20

标签: jquery mmenu

我正在使用jQuery的mmenu插件 - http://mmenu.frebsite.nl/

我遇到的问题是,当我最初打开菜单时,我希望它跳转到具有与当前面包屑最匹配的条目的页面。找到元素不是问题。例如

Vehicles
    Land
        Cars
        Trains
    Water
        Dingies 

我找到了想要显示的项目,然后触发(“open.mm”)。

因此,如果我尝试打开“Land”页面,它就可以了。它将“车辆”设置为打开,我在汽车和火车的页面。

但是如果我尝试直接打开Cars页面,那么没有任何反应。它在Land和Cars上设置样式,但车辆页面仍然是显示的样式。

直接跳到第3级页面的诀窍是什么?

2 个答案:

答案 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>

在下载包中有“水平子菜单”示例页面,它具有类似的设置。

我同意插件在打开子菜单时应该打开所有“父”菜单,但是现在我觉得这是最好的解决方案。