JQuery 使按下的按钮处于事件状态,而所有其他按钮处于非事件状态

标签 jquery

我可以使用以下代码使单个按钮在关闭按钮后保持事件状态:

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

但我还想让页面上的所有其他按钮处于非事件状态。我尝试了以下方法,但使所有非事件状态的表达式需要位于单击功能之外。在单击函数内时,如何运行循环来迭代整个按钮?

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

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

最佳答案

您不需要使用 .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>

关于JQuery 使按下的按钮处于事件状态,而所有其他按钮处于非事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41476916/

相关文章:

javascript - select2 从 javascript 选择多个项目

javascript - 如何从文本区域输入创建 $_POST 数组

JQuery 指令不能仅在一个目标上切换类

javascript - 如何在不依赖 jQuery 的情况下将此 jQuery 代码转换为 Javascript?

jquery - 制作一个 jQuery 文本 slider

javascript - jquery.kyco.googleplusfeed.min.js 未缩小的源代码

javascript - Firefox 中的鼠标移动动画与过渡滞后

javascript - 防止 iScroll 滚动 ListView 过滤器

jquery - 如何用jquery计算正确的总金额?

javascript - 我的列表动画做错了什么?