2014-03-25 5 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 자체를 해킹하려고 할 수 있습니다. 예를 들어

:

가. 이 코드 찾기 (ca. # 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

자바 스크립트 기능을 내 메뉴에 추가하여 홈 레벨 (# 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> 

자바 스크립트

 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)을 게시하지 마십시오. 하나의 좋은 대답을 올린 다음 다른 질문을 중복으로 닫으려면 vote/flag를 사용하십시오. 질문이 중복이 아닌 경우 * 질문에 대한 답변을 작성하십시오. * –

+0

@ Paul Roub, 고맙습니다. – dolmetscher