mmenu关闭所有子菜单并返回顶级默认状态

时间:2015-11-09 20:29:22

标签: jquery mmenu

我正在使用mmenu JQuery插件(http://mmenu.frebsite.nl/

我可以浏览菜单,打开菜单,关闭菜单等等。

但是,当菜单关闭时,我想要做的是重置菜单 - 这样每次打开和触发侧面菜单时,它总是从默认状态开始。

我的菜单设置为默认状态,具有离线扫描行为和滑动子菜单。

我可以在菜单关闭时收到回调:

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

我找到了其他建议:

api.closeAllPanels();

或:

api.closeAllSubmenus();

但这些都不起作用。

我也尝试过以下链接中的潜在方法:

https://github.com/BeSite/jQuery.mmenu/issues/237

Jquery mmenu - Reset menu to main level on close

https://www.drupal.org/node/2352421

每次菜单被触发时,是否有人设法让菜单返回默认状态?

2 个答案:

答案 0 :(得分:1)

结合这两者应该有效:

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

答案 1 :(得分: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();
            }

希望这有用。