【问题标题】:mmenu close all submenus and return to top level default statemmenu 关闭所有子菜单并返回顶级默认状态
【发布时间】:2016-02-10 14:29:56
【问题描述】:

我正在使用 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

有没有人设法让菜单在每次触发菜单时返回到默认状态?

【问题讨论】:

    标签: jquery mmenu


    【解决方案1】:

    将两者结合起来应该可以:

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

    【讨论】:

    • 现在是close:after
    【解决方案2】:

    我可以通过在我的菜单中添加一个 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();
                }
    

    希望这有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多