在removeClass / addClass之后单击不受JQuery元素的影响

时间:2015-05-11 00:12:44

标签: jquery addclass removeclass

不知道如何解释这个,但这里是JS小提琴。 http://jsfiddle.net/1kLsoj6h/

如果您点击任何内容,然后返回“信息中心”,则不受影响。我不确定为什么会这样。这是代码:

$('#Dashboard').addClass('tabs_active').removeClass('tabs');

$('.tabs').click(function(){
    $('.tabs_active').addClass('tabs').removeClass('tabs_active');
    $(this).addClass('tabs_active').removeClass('tabs');
});

这是Dashboard的HTML

<div id="Dashboard" class="tabs ">
    <i class="fa fa-tachometer fw"></i>
    <span id="dash/dash.php" class="remove">Dashboard</span>
</div>

有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您应该更改语句的顺序。在添加click事件之前删除tabs-class时,#Dashboard不会受到影响,因为它没有tabs-class。

$('.tabs').click(function(){
    $('.tabs_active').addClass('tabs').removeClass('tabs_active');
    $(this).addClass('tabs_active').removeClass('tabs');
});

$('#Dashboard').addClass('tabs_active').removeClass('tabs');

或者只是执行click事件以选择它(如果您更喜欢它)(而不是最后一行):

$('#Dashboard').trigger('click');

答案 1 :(得分:0)

更改此

 $('#Dashboard').addClass('tabs_active').removeClass('tabs');

到这个

  $('#Dashboard').addClass('tabs_active');

如果您从tabs移除#Dashboard课程,$('.tabs').click(function(){活动将不会应用于该课程,并且无法使用。

DEMO:https://jsfiddle.net/1kLsoj6h/2/