在按钮组

时间:2015-04-22 09:52:47

标签: javascript jquery html css3 button

我有一组按钮的以下标记:

<div class="btn-group pull-right">
    <button type="button" class="btn btn-default" id="today">Today</button>
    <button type="button" class="btn btn-default" id="this_week">This Week</button>
    <button type="button" class="btn btn-default" id="this_month">This Month</button>
    <button type="button" class="btn btn-default" id="custom">Custom</button>
</div>

我尝试使用jQuery在按钮上用类btn-default替换类btn-primary,以便在单击时,单击的按钮将具有以下class="btn btn-primary",以及任何其他类btn-primary组中的按钮将切换回btn-default

对于我在下面提供的内容,是否有更优雅的解决方案?我是否必须为每个按钮编写一个功能?另外,我冒险将btn btn-default添加到已经拥有该类的按钮。非常感谢任何帮助。

$("#today").click(function () {
    $(this).parent().find("btn btn-primary").removeClass("btn btn-primary");
    $(this).parent().addClass("btn btn-default");
    $(this).addClass("btn btn-primary");
});

2 个答案:

答案 0 :(得分:7)

Demo

$('.btn-group').on('click', '.btn', function() {
  $(this).addClass('btn-primary').siblings().removeClass('btn-primary').addClass('btn-default');
});
.btn-default {
  color: red;
}
.btn-primary {
  color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div class="btn-group pull-right">
  <button type="button" class="btn btn-default" id="today">Today</button>
  <button type="button" class="btn btn-default" id="this_week">This Week</button>
  <button type="button" class="btn btn-default" id="this_month">This Month</button>
  <button type="button" class="btn btn-default" id="custom">Custom</button>
</div>

  1. $(this):是点击的按钮
  2. addClass('btn-primary'):将指定的类添加到单击的按钮
  3. .siblings('.btn'):将获得btnthis元素的兄弟姐妹(同一级别的节点)
  4. .removeClass('btn-primary').addClass('btn-default'):相应地更新siblings
  5. 的班级

答案 1 :(得分:0)

尝试使用.toggleClass()

var buttons = $("button");
buttons.on("click", function() {
  buttons.toggleClass("btn-default", true).removeClass("btn-primary")
  .filter(this).toggleClass("btn-primary btn-default");
})
.btn-primary {
  background:yellow;
}

.btn-default {
  background:green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="btn-group pull-right">
        <button type="button" class="btn btn-default" id="today">Today</button>
        <button type="button" class="btn btn-default" id="this_week">This Week</button>
        <button type="button" class="btn btn-default" id="this_month">This Month</button>
        <button type="button" class="btn btn-default" id="custom">Custom</button>
      </div>