javascript - jQuery - onClick td 突出显示所有行上方和下方的所有 td

标签 javascript jquery

如果用户点击任何 td,则需要通过添加 .tr-active 类(完成和工作)来突出显示该父 tr。

我想要什么: 例如:如果用户单击第二行的第三个单元格,则应通过添加 .td-active 类来突出显示每行的所有第三个单元格。

当前只有单击的 td 正在获取类,如何将所有相等的 td 添加到 .td-active 类?

jsFiddle

Expected results:

enter image description here

What I am getting:

enter image description here

HTML

<table id="myTable">
  <tr>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
  </tr>
  <tr>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
  </tr>
  <tr>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
  </tr>
</table>

JavaScript:

$("table#myTable tr td").on('click', function() {
  $('table#myTable tr').removeClass('tr-active');
  $('table#myTable td').removeClass('td-active');
  $(this).addClass('td-active');
  $(this).closest('tr').addClass('tr-active');
})

最佳答案

要检索列中的所有 td,您可以使用 :nth-child() 选择器以及单击单元格的索引。试试这个:

let $table = $('#myTable');
let $tr = $table.find('tr');
let $td = $table.find('td');

$td.on('click', function() {
  $tr.removeClass('tr-active');
  $td.removeClass('td-active');

  let $cell = $(this);
  $cell.addClass('td-active');
  $cell.closest('tr').addClass('tr-active');

  let index = $cell.index();
  $table.find(`td:nth-child(${index + 1})`).addClass('td-active');
})
body {
  font-family: verdana;
  font-size: 13px;
}

table,
td {
  border: 1px solid #000;
  border-collapse: collapse;
}

td {
  padding: 5px;
  min-width: 60px;
}

.buttons {
  margin-top: 20px;
}

td.td-active {
  background-color: #ffcbcb !important;
}

tr.tr-active td {
  background-color: #ccc;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="myTable">
  <tr>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
  </tr>
  <tr>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
  </tr>
  <tr>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
  </tr>
</table>

关于javascript - jQuery - onClick td 突出显示所有行上方和下方的所有 td,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61613464/

相关文章:

javascript - 为什么在某些情况下我们不需要在 JavaScript 函数定义周围加上一对额外的括号?

php - 使用ajax功能时重新加载页面

javascript - 如何使用 PHP 使用 javascript?

javascript - 为什么我的 WebSocket 客户端总是在发送消息后重新加载?

Javascript - 需要策略模式建议

javascript - 如何在文本框中传递一个额外的隐藏按键?

java - 尝试执行 Javascript 时线程 "AWT-EventQueue-0"java.lang.NullPointerException 中的异常

javascript - 用 Javascript 和数组进行测验?

jquery - 如何在 jQuery 中添加日期和整数

javascript - JQM 1.4.5 : disabling button breaks page rendering