2014-12-13 106 views
0

很难理解这里究竟发生了什么。我有一个导航图标的汉堡包,当用户点击图标时,向该元素添加一个活动类。jQuery |删除活动类

由于某些原因,我不能console.log当活动类是在元素?? ??我希望能够做到这一点的原因是,如果用户点击汉堡包活动时返回到“非”活动状态。

这里是我的jQuery

var nav = $('.nav-toggle'), 
    activeNav = $('.nav-show'); 

nav.on("click", function(e){ 
    e.preventDefault(); 
    $(this).addClass('nav-show'); 
}); 

activeNav.on("click", function() { 
    console.log("clicked active nav"); 
}); 

JSFIDDLE DEMO

回答

1

尝试丝毫这样的:

var nav = $('.nav-toggle'); 

nav.on("click", function(e){ 
    e.preventDefault(); 
    var $this = $(this); 
    if ($this.hasClass('nav-show')) { 
     $(this).removeClass('nav-show'); 
     alert("asdas"); 
     console.log("clicked active nav"); 
    } else { 
     $(this).addClass('nav-show'); 
    } 

}); 

Code here

+0

Thanks for Ť他的男人 - 我曾想过如果发表声明,只是不理解选择器问题。谢谢! – Filth 2014-12-13 00:45:38

2

这是因为绑定已经在当你声明的变量,当您更改类,你不会再哪一个是活动的设置应用绑定。只要绑定到包装元素和委托的事件,而不是:

变化activeNav.on("click", function() {

$('.some-static-container-div').on('click', '.nav-show', function() {...

+0

作为一个轻微的修改:'$ ('.nav-show,.nav-toggle')。parent()。on('click','.nav-show,.nav-toggle',function(){...});' – 2014-12-13 00:40:31