2014-03-25 45 views
0

我目前有mmenu作爲我的移動菜單。我需要能夠在關閉時將菜單重置爲第一級。截至目前,在關閉菜單並重新打開菜單後,默認功能會讓我在離開時更加深入地進入子級別。jquery mmenu - 將菜單重置爲主關閉

我非常感謝這件事的幫助。

謝謝!

回答

0

您可以使用「關閉」回調事件關閉所有打開的面板。

當您使用水平子菜單(默認設置)時,這樣做的訣竅是打開第一個面板(「主」級菜單)。

$("#menu").mmenu(); 
$("#menu").on("closed", function() { 
    $("#menu .mm-panel").first().trigger("open.mm"); 
}); 
+0

這不起作用。你從哪裏得到的?mm面板和open.mm類? – MIke

0

你可以嘗試破解lib本身。

例如:

a。找到這個代碼(大約#374):

 
this.__transitionend(a.$page.first(), function() { 

b。右上面的代碼後,你可以插入這樣的事情:

 
var jid = t.$menu.attr('id'); 
$('#' + jid + ' .mm-panels').fadeOut('fast', function(){ 
    $(this).children().removeClass('mm-opened mm-subopened mm-hidden mm-current mm-highest'); 
    $('#' + jid + ' .mm-panels :first-child').addClass('mm-opened mm-current'); 
}).fadeIn('fast'); 

解釋:

原始MM碼(一個你正在尋找)面板上的火災被關閉,不管如何,或者爲什麼正在關閉。

剛剛粘貼的代碼,重新安排mmenu引擎使用的類來更改mmenu狀態。

要使所有轉變爲更順利發生,面板(例如,如果您使用iconbar擴展名)的可見部分淡出,並在菜單面板主要iconbar是衰落的重新定位後。

0

弗雷德的答案適用於Mmenu的早期版本,但如果您使用的是最新版本(最新的在這個被張貼的時間爲5.6.1),您可以使用API​​方法如下所示:

var api = $("#menu").data("mmenu"); 
api.bind("closed", function() { 
    api.closeAllPanels(); 
}); 
0

試試這在任何菜單上點擊:

$(".mm-subclose").trigger('click'); 

Trigger()是一個JQuery函數。當我們點擊子菜單頂部的後退箭頭時。子菜單隱藏。所以當我們使用「.mm-subclose」類後退箭頭時,Menu會重置爲主級別。

+0

請解釋你的回答 – Mazz

+0

「.mm-subclose」是mm-menu後退箭頭的類別。當我們點擊後退箭頭時,菜單將重置爲主級別。因此,點擊子菜單上添加此代碼。 –

0

我能夠通過在我的菜單中添加一個javascript函數來解決此問題,該函數可以導航到家庭級別(#mm-1)。它還允許您通過將相關鏈接作爲參數傳遞來打開任何面板。請看看下面的代碼:

HTML

 <div class="mh-head navbar-fixed-top"> 
     <span class="mh-btns-left"><a class="fa fa-bars" 
     onclick="openSubmenu('#mm-1')"></a></span> 
     </div> 

的Javascript

 function openSubmenu(submenu) { 
      instantiateComponents(submenu); 
      openDesiredSubmenu(); 
     } 

     function instantiateComponents(submenu) { 
      instantiateCurrentMenu(); 
      instantiateApi(); 
      instantiateDesiredSubmenu(submenu); 
     } 

     function instantiateCurrentMenu() { 
      currentMenu = $('#menu'); 
      currentMenu.mmenu({}); 
     } 

     function instantiateApi() { 
      menuApi = currentMenu.data('mmenu'); 
     } 

     function instantiateDesiredSubmenu(submenu) { 
      desiredSubmenu = currentMenu.find(submenu); 
     } 

     function openDesiredSubmenu() { 
      menuApi.openPanel(desiredSubmenu.closest('.mm-panel')); 
      menuApi.open(); 
     } 

希望這是有幫助的。

+0

請不要發佈[相同的答案](http://stackoverflow.com/a/46717655)多個問題。發佈一個很好的答案,然後投票/標記以重複關閉其他問題。如果問題不是重複的,*定製你對問題的回答。* –

+0

@Paul Roub,會的,謝謝你的提升。 – dolmetscher