Jquery 触发mmenu中的关闭功能
我一直在尝试创建一个按钮,当菜单打开和关闭时,它会显示动画。为此,我创建了一个简单的函数来执行Jquery 触发mmenu中的关闭功能,jquery,mmenu,Jquery,Mmenu,我一直在尝试创建一个按钮,当菜单打开和关闭时,它会显示动画。为此,我创建了一个简单的函数来执行API.open()和API.close()。代码: var API = $("#primary-menu").data( "mmenu" ), menuOpen = 0; $("#menu-button").click(function() { if(menuOpen === 0){ API.open(); menuOpen = 1; }
API.open()代码>和API.close()单击按钮时的代码>。代码:
var API = $("#primary-menu").data( "mmenu" ),
menuOpen = 0;
$("#menu-button").click(function() {
if(menuOpen === 0){
API.open();
menuOpen = 1;
}
else{
API.close();
menuOpen = 0;
}
});
现在的问题是,当菜单通过单击内容区域关闭时,按钮没有动画
$(".mm-opening #mm-0").click(function(){
console.log("Click Successful");
$("#menu-button").removeClass("close");
});
使用console.log方法和开发工具,我发现当我在内容区域中单击时,单击根本没有注册,因此我无法设置图标的动画
下面是演示:
有人能解释一下原因吗?或者另一种方法来实现相同的结果。mmenu在html标记上添加一个类。当菜单被触发时,mm打开
,当其关闭时,将其删除,这样您就可以设置一个时间间隔来观察html标记是否具有该类
如果您使用的是JQuery,则可以执行类似的操作
var thread = setInterval(checkHtmlTag(),20)
function checkHtmlTag (){
var menuOpen;
if ($("html").hasClass("mm-opened")){
menuOpen = true
} else{
menuOpen = false
}
}
多亏了GitHub社区,我找到了解决方案
有一个id为#mm blocker
的div
阻止了与页面的交互,因此我用显示:无关闭了它代码>和点击现在可以通过javascript注册。您可以按照下面提到的步骤添加动画汉堡
图标
首先,前往这个令人惊叹的汉堡包动画图标集合,下载CSS并按照说明进行操作。现在,您的HTML应该如下所示:
<button id="my-icon" class="hamburger hamburger--collapse" type="button">
<span class="hamburger-box">
<span class="hamburger-inner"></span>
</span>
</button>
我认为一个好的解决方案是,如果有人能够通过jquery.mmenu.min.js
文件,找出触发菜单打开和关闭的代码的确切位置。我看了一遍,但不明白。
<div class="Fixed">
<button id="my-icon" class="hamburger hamburger--collapse" type="button">
<span class="hamburger-box">
<span class="hamburger-inner"></span>
</span>
</button>
</div>
var $menu = $("#my-menu").mmenu({
// options
});
var $icon = $("#my-icon");
var API = $menu.data( "mmenu" );
$icon.on( "click", function() {
API.open();
});
API.bind( "open:finish", function() {
setTimeout(function() {
$icon.addClass( "is-active" );
}, 100);
});
API.bind( "close:finish", function() {
setTimeout(function() {
$icon.removeClass( "is-active" );
}, 100);
});