javascript - jQuery仅在已选择时删除突出显示

标签 javascript jquery html css events

这应该是一个非常基本的修复。我想在单击已突出显示的按钮时从中删除选定的类。我希望在任何给定时间只突出显示一个按钮。

http://jsfiddle.net/7wy7sjm5/1/

我让所有这些都先执行的删除类的原因是,当单击一个时,我只想突出显示那个,而不是让之前单击的仍然突出显示。当点击已经突出显示的同一个按钮时,想要删除突出显示。希望这是有道理的。

$(".details-btn").on("click", function(){
var $this = $(this);
//Add/Remove selected for button
$(".details-btn").removeClass("selected");
$this.toggleClass("selected");});

可能使用 .each() 循环遍历按钮的每个实例,如果它有类则删除?我尝试了不同的方法,但没有一种能按我想要的方式工作。

最佳答案

在这种情况下,您可以使用 .not() .

基本上,从所有 .details-btn 中删除 .selected,除了当前带有 not(this) 的那个。然后,使用 toggle()

$(".details-btn").on("click", function() {
  var $this = $(this);
  $(".details-btn").not(this).removeClass("selected");
  $this.toggleClass("selected");
});

$(".details-btn").on("click", function() {
  var $this = $(this);
  $(".details-btn").not(this).removeClass("selected");
  $this.toggleClass("selected");
});
* {
  margin: 0;
  padding: 0;
  font-size: 1.1em;
}
table {
  border: 1px solid;
  text-align: center;
}
thead {
  background-color: #ddd;
}
th {
  border-bottom: 1px solid;
}
td {
  width: 140px;
}
.details-btn {
  background-color: #dad1ea;
  width: 50px;
  margin: 4px auto;
  border: 1px solid #4b3575;
  border-radius: 5px;
  cursor: pointer;
}
.selected {
  color: #fff;
  background-color: #4b3575;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th scope="col">Data</th>
      <th scope="col">View</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>
        <p class="details-btn">+</p>
      </td>
    </tr>
    <tr>
      <td>2</td>
      <td>
        <p class="details-btn">+</p>
      </td>
    </tr>
    <tr>
      <td>3</td>
      <td>
        <p class="details-btn">+</p>
      </td>
    </tr>
    <tr>
      <td>4</td>
      <td>
        <p class="details-btn">+</p>
      </td>
    </tr>
    <tr>
      <td>5</td>
      <td>
        <p class="details-btn">+</p>
      </td>
    </tr>
    <tr>
      <td>6</td>
      <td>
        <p class="details-btn">+</p>
      </td>
    </tr>
  </tbody>
</table>

关于javascript - jQuery仅在已选择时删除突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824580/

相关文章:

javascript - .css() 会自动添加 vendor 前缀吗?

javascript - Google 通过 OAuth2 身份验证从 JavaScript 客户端联系 API 问题

javascript - 将乘法金额结果限制为小数点后 2 位

javascript - 如何使用 jQuery 从 <b> 标签中提取粗体文本

javascript - 在 HTML 页面中查找元素时遇到问题

html - Bootstrap 向右浮动元素

javascript - 如何通过 JS 更改悬停时直接相邻的兄弟元素的 CSS?

jquery - 同位素滤光片仅显示滤光画廊图像

javascript - 使用 AJAX 和 PHP 和 Javascript 自动填充输入文本框

javascript - 如何验证具有特定字符数的表单