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);
});