jqueryif/Else语句,以检查元素是否具有类并生成这两个结果?

jqueryif/Else语句,以检查元素是否具有类并生成这两个结果?,jquery,if-statement,responsive-design,enquire.js,Jquery,If Statement,Responsive Design,Enquire.js,我正在使用该库将JavaScript媒体查询添加到我正在开发的站点中 问题发生在我最初加载网站时 我调整到860px断点,并切换导航。一切正常,如预期 然后我调整大小超过860像素 我再次调整到860px enquire e.js媒体查询。切换导航输出两个控制台消息 有什么想法吗 enquire.register("screen and (max-width:860px)", { match : function() { na

我正在使用该库将JavaScript媒体查询添加到我正在开发的站点中

问题发生在我最初加载网站时

  • 我调整到860px断点,并切换导航。一切正常,如预期
  • 然后我调整大小超过860像素
  • 我再次调整到860px enquire e.js媒体查询。切换导航输出两个控制台消息
  • 有什么想法吗

       enquire.register("screen and (max-width:860px)", {
    
            match : function()
            {   
                nav_wrapper.removeClass('show').addClass('hide');
    
                nav_toggle.click(function()
                {
                    if((nav_wrapper).hasClass('hide'))
                    {
                        console.log('It\'s hidden');
                        nav_wrapper.removeClass('hide').addClass('show');
                    }
                    else
                    {
                        console.log('It\'s opened up');
                        nav_wrapper.removeClass('show').addClass('hide');
                    }
    
                });
    
            },
    
            unmatch : function()
            {
                nav_wrapper.removeClass('hide').addClass('show');
            },
    
        });
    

    每次调用
    match
    ,您都在添加一个新的
    单击
    处理程序(通过执行
    导航切换。再次单击(function(){…})
    )。他们一堆一堆,每个人都会被叫来。因此,在第一次调用
    match
    之后,您就有了一个,并且可能会得到您期望的行为。在第二次调用
    match
    之后,您有两个,并且开始得到错误的行为。在第三次调用
    match
    后,您将有三个

    查看您的
    单击
    处理程序,没有理由这样做,只需将其连接一次(可能在
    匹配
    之外)

    例如:

    // Hook up click **once**
    nav_toggle.click(function() {
        if (nav_wrapper.hasClass('hide')) {
            console.log('It\'s hidden bud');
            nav_wrapper.removeClass('hide').addClass('show');
        } else {
            console.log('It\'s opedn up mate');
            nav_wrapper.removeClass('show').addClass('hide');
        }
    
    });
    
    // Respond to screen width changes
    enquire.register("screen and (max-width:860px)", {
    
        match: function() {
            nav_wrapper.removeClass('show').addClass('hide');
        },
    
        unmatch: function() {
            nav_wrapper.removeClass('hide').addClass('show');
        },
    
    });
    


    旁注:我删除了
    if((nav\u wrapper.hasClass('hide'))
    nav\u wrapper
    周围不必要的
    )!谢谢你,T.J。