2015-01-07 76 views
0

我工作的一個項目中,我將要使用jQuery插件mmenu(http://mmenu.frebsite.nl/)選擇的所有直接父列表條目。請在mmenu

我已經做了一些的定製適合我的需要,但我不知道如何處理我的本期做。在mmenu中,當我點擊一個列表條目時,我將被導航到給定的href,並且被點擊的項目通過mmenus css class「.mm-selected」變爲活動狀態。到現在爲止還挺好。

現在我想另外標記父列表項(和多數民衆父,依此類推,直到菜單根)的選擇。這應該是這樣的,當用戶在菜單中上一級時,他應該能夠看到他目前在哪個類別中。

example menu structure where parent of current item gets selected as well

下面是施加後mmenu菜單HTML結構的一個例子。這顯示了具有4個主頁面(索引,頁面1,頁面2和頁面3)和3個子頁面(2.1,2.2,2.3)的菜單的代碼。

<nav id="nav" class="mm-menu mm-horizontal mm-offcanvas mm-hasheader mm-current mm-opened"> 
    <ul class="mm-list mm-panel mm-opened mm-current" id="mm-0"> 
     <li class="mm-selected"> 
      <a href="#/index">Index</a> 
     </li> 
     <li> 
      <a href="#/page1">Page 1</a> 
     </li> 
     <li> 
      <a class="mm-subopen mm-fullsubopen" href="#mm-1"></a> 
      <span>Page 2</span> 
     </li> 
     <li> 
      <a href="#/Page 3">Page 3</a> 
     </li> 
    </ul> 
    <ul class="mm-list mm-panel mm-highest" id="mm-1"> 
     <li class="mm-subtitle"> 
      <a class="mm-subclose" href="#mm-0">Page 2</a> 
     </li> 
     <li> 
      <a href="#/page2-1">Page 2.1</a> 
     </li> 
     <li> 
      <a href="#/page2-2">Page 2.2</a> 
     </li> 
     <li> 
      <a href="#/page2-3">Page 2-3</a> 
     </li> 
    </ul> 
</nav> 

如果你有一些想法在哪裏以及如何實現這種功能,那將是非常棒的。

+0

給我們html結構。或工作jsfiddle –

+0

添加html示例。 – Fidel90

回答

0

因此,目前我做了一些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); 
    } 
};