Jquery mmenu - 关闭时将菜单重置为主级别

时间:2014-03-25 16:42:29

标签: jquery css mobile navigation mmenu

我目前有mmenu作为我的手机菜单。我需要能够在关闭时将菜单重置为第一级。截至目前,默认功能使我在关闭菜单并重新打开后更深入到子级别时离开了。

我非常感谢帮助解决这个问题。

谢谢!

5 个答案:

答案 0 :(得分:0)

你可以使用"关闭"回调事件以关闭所有打开的面板。

这样做的诀窍 - 当您使用水平子菜单(默认设置)时 - 打开第一个面板("主"级别菜单)。

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

答案 1 :(得分:0)

你可以尝试破解lib本身。

例如:

一个。找到这段代码(约#374):

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

湾在上面的代码之后,你可以插入这样的东西:

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状态。

为了使所有过渡更顺利,面板的可见部分(例如,如果使用图标栏扩展名)淡出,并且在重新定位菜单面板​​后,主图标栏正在淡入。

答案 2 :(得分:0)

弗雷德的答案适用于以前版本的Mmenu,但如果您使用的是最新版本(最新版本为5.6.1),您可以使用以下API方法:

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

答案 3 :(得分:0)

在任何菜单上点击:

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

Trigger()是一个JQuery函数。当我们点击子菜单顶部的后退箭头时。子菜单被隐藏。因此,当我们使用“.mm-subclose”后退箭头类时,Menu会重置为主级别。

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

希望这有用。