Jquery没有动态添加类

时间:2016-03-15 22:30:42

标签: jquery class

我正在建立一个点击下拉菜单。当点击链接时,下拉列表会下降,然后当触摸掉dropmenu以外的任何内容时,dropmenu会向上滑动。唯一剩下的就是在再次点击链接时使dropmenu向上滑动。我已经在链接中添加了一个.act类,以便我可以从其他链接中单独输出(这样我可以在单击它时隐藏它)但是jquery没有读取这个添加的类。这是我的代码。

function headerNav() {
  $('header nav a').bind('click', function(e) {
      e.preventDefault();
  });

  // change
  $('header nav a').on('click', function() {
      changeNavCont($(this));
  });

  //show
  $('header nav a').on('click', function() {
     $('.dropDownMenu').addClass('show');
     $(this).addClass('act');
  });

  //hide
$('header nav a.act').on('click', function() {
        $('.dropDownMenu').removeClass('show');
        $('header nav a').removeClass('act');
});  

  $(document).on('click', function(e) {
    if (($(e.target).closest('header nav').length === 0)) {
        $('.dropDownMenu').removeClass('show');
        $('header nav a').removeClass('act');
    }
  });
}

function changeNavCont($this) {

  $('header nav a').removeClass('act');
  $this.addClass('act');
  var show = $this.attr('href');
  $('.dropDownMenu article').removeClass('show');
  $('.dropDownMenu article.' + show).addClass('show'); 

}

1 个答案:

答案 0 :(得分:1)

您在show函数中使用了$this,但在该函数中未定义$ this。您似乎应该使用$(this)制作它:

//show
$('header nav a').on('click', function() {
   $('.dropDownMenu').addClass('show');
   $(this).addClass('act');
});