JQuery使按下的按钮处于活动状态,所有其他按钮处

时间:2017-01-05 03:34:33

标签: jquery

使用以下代码移开按钮后,我可以使单个按钮保持活动状态:

php artisan migrate:rollback

但我也希望页面上的所有其他按钮都处于非活动状态。我尝试了以下方法,但是使所有非活动状态的表达式都需要在click函数之外。如何在点击功能内部运行循环来迭代整个按钮?

    $('.btn').click(function(){
        if($(this).hasClass('active')){
            $(this).removeClass('active')
        } else {
            $(this).addClass('active')
        }
    });

4 个答案:

答案 0 :(得分:3)

您不需要使用.each()进行迭代 - 只需在按钮单击时删除.active类,然后将其应用于单击的按钮。

刚编辑帖子也将非活动类应用于按钮,因此单击一个按钮会将非活动类应用于未单击的按钮。



$(document).ready(function(){
  $('.btn').click(function(){
    $('.btn').removeClass('active').addClass('inactive');
     $(this).removeClass('inactive').addClass('active');
    });
})

.btn{color:white}
.active{background:green}
.inactive{background:red}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" class="btn inactive">test 1</button>
<button type="button" class="btn inactive">test 2</button>
<button type="button" class="btn inactive">test 3</button>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

不使用(this):Working fiddle

 $('.btn').click(function() {
      if ($(this).is("active"))
        $('.btn').not(this).removeClass('active');
      else
        $(this).addClass('active');
      $('.btn').not(this).removeClass('active');
    });

答案 2 :(得分:0)

据我所知,问题是您删除了每个活动的按钮类,然后检查按钮是否具有该类。这没有任何意义,因为你之前已经删除它,你可以将它保存为变量true或false,然后删除所有按钮,如下所示:

$(function(){
$('.btn').click(function(){
    var active = $(this).hasClass('active');
    //make all inactive-doesn't work
    $( '.btn' ).each(function( ) {
        if($(this).hasClass('active')){
            $(this).removeClass('active')
        }
    });

    if(active){
        $(this).removeClass('active')
    } else {
        $(this).addClass('active')
    }
});
});

答案 3 :(得分:0)

$('.btn').click(function(){
    // remove all the active class
    $( '.btn').each(function() {
        $(this).removeClass('active')
    });
    //then the click button add class active 
    if($(this).hasClass('active')){
        $(this).removeClass('active')
    } else {
        $(this).addClass('active')
    }

});