Jquery mmenu – Restablecer el menú al nivel principal al cerrar

Actualmente tengo mmenu como mi menú móvil. Necesito poder restablecer mi menú al primer nivel al cerrar. A partir de ahora, la funcionalidad predeterminada me deja donde lo dejé mientras navegaba más profundamente en el subnivel después de cerrar el menú y volver a abrirlo.

Apreciaría mucho la ayuda con este asunto.

¡¡Gracias!!

Podría usar el evento de callback “cerrado” para cerrar todos los paneles abiertos.

El truco para hacer esto, cuando está usando submenús horizontales (la configuración predeterminada), es abrir el primer panel (el menú de nivel “principal”).

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

Podrías intentar piratearlo.

Por ejemplo:

a. encuentra este código (ca. # 374):

 este .__ transitionend (a. $ page.first (), function () {

segundo. Justo después del código anterior, puedes insertar algo como esto:

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

explicación:

El código mm original (uno que está buscando) se dispara en el panel que se está cerrando, independientemente de cómo o por qué se está cerrando.

El código que acaba de pegar, reorganiza las clases utilizadas por el motor mmenu para cambiar los estados mmenu.

Para que todas las transiciones se realicen de manera más fluida, la sección visible del panel (por ejemplo, si utiliza la extensión de la barra de icons) se desvanece, y luego de la reubicación de los paneles del menú, la barra de icons principal se está desvaneciendo.

La respuesta de Fred funciona en una versión anterior de Mmenu, pero si está usando la última versión (la última vez que se publicó fue 5.6.1), puede usar los métodos de API como los siguientes:

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

Prueba esto en cualquier clic del menú:

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

Trigger () es una función de JQuery. Cuando hacemos clic en la flecha hacia atrás en la parte superior del submenú. Los submenús se ocultan. Entonces, cuando usamos “.mm-subclose” la clase de la flecha hacia atrás, el Menú se restablece al nivel principal.

Pude resolver esto agregando una función javascript a mi menú, que le permite navegar hasta el nivel de inicio (# mm-1). También le permite abrir cualquier panel pasando el enlace relativo como parámetro. Por favor, eche un vistazo al siguiente código:

HTML

   

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(); } 

Espero que esto sea de ayuda.