我目前有 mmenu 作为我的移动菜单。我需要能够在关闭时将菜单重置为第一级。截至目前,默认功能让我在关闭菜单并重新打开后深入到子级别时离开了我离开的地方。
我非常感谢您对此事的帮助。
谢谢!!
我目前有 mmenu 作为我的移动菜单。我需要能够在关闭时将菜单重置为第一级。截至目前,默认功能让我在关闭菜单并重新打开后深入到子级别时离开了我离开的地方。
我非常感谢您对此事的帮助。
谢谢!!
Fred 的答案适用于以前版本的 Mmenu,但如果您使用的是最新版本(发布时最新版本是 5.6.1),您可以使用如下 API 方法:
var api = $("#menu").data( "mmenu" );
api.bind( "closed", function() {
api.closeAllPanels();
});
您可以使用“关闭”回调事件来关闭所有打开的面板。
这样做的技巧——当您使用水平子菜单(默认设置)时——是打开第一个面板(“主”级菜单)。
$("#menu").mmenu();
$("#menu").on( "closed", function() {
$("#menu .mm-panel").first().trigger( "open.mm" );
});
我可以通过在我的菜单中添加一个 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();
}
希望这会有所帮助。
在任何菜单上单击:
$(".mm-subclose").trigger('click');
Trigger() 是一个 JQuery 函数。当我们单击子菜单顶部的后退箭头时。子菜单被隐藏。因此,当我们使用“.mm-subclose”类返回箭头时,菜单会重置为主级别。
您可以尝试破解 lib 本身。
例如:
一个。找到此代码(ca. #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('快');
解释:
原始 mm 代码(您正在寻找的代码)在面板关闭时触发,无论它是如何关闭或为什么关闭。
您刚刚粘贴的代码,重新排列 mmenu 引擎使用的类以更改 mmenu 状态。
为了使所有的过渡更加顺利,面板的可见部分(例如,如果您使用图标栏扩展)会淡出,并且在重新定位菜单面板后,主图标栏会淡入。