两键开关

时间:2018-11-13 16:21:41

标签: javascript jquery

我知道可能已经被询问了十亿次,但是我找不到任何解决方案。所以,这是我的代码:

.btn {
  width: 200px;
  height: 45px;
}

.--selected {
  background-color: red;
}
<div class="container">
  <button class="btn --selected">uno</button>
  <button class="btn">dos</button>
</div>

我需要确保在按下按钮之后,它向其添加了一个--selected类,而另一个丢失了,就好像它是两个之间的切换

请帮帮我

4 个答案:

答案 0 :(得分:1)

您可以尝试使用removeClass()toggleClass()

请注意: --selected不是有效的类名。双破折号(--)用于注释CSS中的代码。尽管您可以使用单个,三个连续的破折号,但最好避免使用这些命名模式。

$('.btn').click(function(){
  $('.selected').removeClass('selected');
  $(this).toggleClass('selected');
});
.btn {
  width: 200px;
  height: 45px;
}

.selected {
  background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <button class="btn selected">uno</button>
  <button class="btn">dos</button>
</div>

答案 1 :(得分:1)

这会将类添加到单击的按钮上,并从所有其他具有类btn的元素中删除该类。

我稍微修改了类名,使其也成为有效的CSS类名。

$('.btn').on('click', function() {
  $(this).addClass('selected');
  $('.btn').not(this).removeClass('selected');
});
.btn {
  width: 200px;
  height: 45px;
}

.selected {
  background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <button class="btn">uno</button>
  <button class="btn">dos</button>
</div>

答案 2 :(得分:0)

简单:

$('.btn').click(function() {
    $('.btn').removeClass('--selected');
    $(this).addClass('--selected');
});

答案 3 :(得分:0)

可以使用如下所示的Javascript和ES6轻松完成此操作,无需添加额外的库:

const btns = Array.from(document.querySelectorAll('.btn'));

const toggleClass = (e) => {
  for (var el of btns) {
    el.classList.remove('--selected')
  }
  e.currentTarget.classList.add('--selected')
}

for (var el of btns) {
  el.addEventListener('click', toggleClass)
}
.btn {
  width: 200px;
  height: 45px;
}

.--selected {
  background-color: red;
}
<div class="container">
  <button class="btn --selected">uno</button>
  <button class="btn">dos</button>
</div>

此代码可能会对您有所帮助。