jqueryif/Else语句,以检查元素是否具有类并生成这两个结果?
我正在使用该库将JavaScript媒体查询添加到我正在开发的站点中 问题发生在我最初加载网站时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
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。