0

jQuery の mmenu プラグインを使用しています -- http://mmenu.frebsite.nl/

私が抱えている問題は、最初にメニューを開いたときに、現在のブレッドクラムに最も一致するエントリを持つページにジャンプしたいということです。要素を見つけることは問題ではありません。例えば

Vehicles
    Land
        Cars
        Trains
    Water
        Dingies 

表示したい項目のある を見つけて、その上で trigger("open.mm") を実行します。

そのため、「土地」ページを開こうとすると、機能します。「Vehicles」を開いて、Cars and Trains のページにいます。

ただし、車のページを直接開こうとしても、何も起こりません。Land と Cars のスタイルを設定しますが、表示されるのは Vehicles ページのままです。

第 3 レベルのページに直接ジャンプするコツは何ですか?

4

2 に答える 2

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)

これを行う必要があるのは、ページで初めてメニューを開いたときだけであることに注意してください。別のサブメニューが既に選択されていた場合に機能するかどうかはわかりません。

于 2013-07-26T18:02:17.867 に答える
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>

ダウンロード パックには、同様の設定を持つ「水平サブメニュー」のサンプル ページがあります。

子メニューを開くときにプラグインがすべての「親」メニューを開く必要があることに同意しますが、今のところこれが最善の解決策だと思います。

于 2013-07-27T21:08:25.100 に答える