javascript - 使用 html 中的复选框在表格上切换颜色

标签 javascript jquery html css

所以我有这样一张 table

<table class="rest_tab" border="1">
<tbody><tr><th>Times</th><th></th><th></th></tr>
<tr><td <="" td=""></td><td align="right"><input type="checkbox" class="selectAll" id="Checkbox4" on=""></td><td align="right"><input  type="checkbox" class="selectAll" id="Checkbox5" on=""></td></tr>
<tr><td <="" td=""></td><td align="right"><input type="checkbox" class="selectAll" id="Checkbox7" on=""></td><td align="right"><input type="checkbox" class="selectAll" id="Checkbox8" on=""></td></tr>
<tr><td <="" td=""></td><td align="right"><input type="checkbox" class="selectAll" id="Checkbox10" on=""></td><td align="right"><input type="checkbox" class="selectAll" id="Checkbox11" on=""></td></tr>
</tbody></table>

演示:

$(document).ready(function() {
  $('.pretty tr').toggle(function() {
    $(this).find(':checkbox').attr('checked', true);
    $(this).toggleClass('red');
  }, function() {
    $(this).toggleClass('red');
    $(this).find(':checkbox').attr('checked', false);
  });
});
table {
  font-family: 'Arial';
  margin: 25px auto;
  border-collapse: collapse;
  border: 1px solid #eee;
  border-bottom: 2px solid #00cccc;
  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1), 0px 10px 20px rgba(0, 0, 0, 0.05), 0px 20px 20px rgba(0, 0, 0, 0.05), 0px 30px 20px rgba(0, 0, 0, 0.05);
}

table td:hover {
  background: #C1FFC1;
}

table td:click {
  background: #fcc;
}

table td:hover {
  color: #000;
}

table th,
table td {
  color: #999;
  border: 1px solid #eee;
  padding: 12px 35px;
  border-collapse: collapse;
}

table th {
  background: #00cccc;
  color: #fff;
  text-transform: uppercase;
  font-size: 12px;
}

table th.last {
  border-right: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="rest_tab" border="1">
  <tbody>
    <tr>
      <th>Times</th>
      <th></th>
      <th></th>
    </tr>
    <tr>
      <td <="" td=""></td>
      <td align="right"><input type="checkbox" class="selectAll" id="Checkbox4" on=""></td>
      <td align="right"><input type="checkbox" class="selectAll" id="Checkbox5" on=""></td>
    </tr>
    <tr>
      <td <="" td=""></td>
      <td align="right"><input type="checkbox" class="selectAll" id="Checkbox7" on=""></td>
      <td align="right"><input type="checkbox" class="selectAll" id="Checkbox8" on=""></td>
    </tr>
    <tr>
      <td <="" td=""></td>
      <td align="right"><input type="checkbox" class="selectAll" id="Checkbox10" on=""></td>
      <td align="right"><input type="checkbox" class="selectAll" id="Checkbox11" on=""></td>
    </tr>
  </tbody>
</table>

我希望能够,而不是仅仅在悬停时改变颜色,在为表中的每个框选中复选框时保留颜色。

我已经尝试了很长一段时间,但无法让 js 执行我想要的操作,我们将不胜感激任何帮助。

最佳答案

像这样的 css 规则将帮助您切换复选框选择

.selected{
    background-color: #C1FFC1;
}

在你的js中你可以做这样的事情

$('.selectAll').change(function(){
  $(this).closest('td').toggleClass('selected');
});

更新了您的 jsfiddle demo

$(document).ready(function () {
     $('.selectAll').change(function(){
        $(this).closest('td').toggleClass('selected');
    });
});
table {
    font-family:'Arial';
    margin: 25px auto;
    border-collapse: collapse;
    border: 1px solid #eee;
    border-bottom: 2px solid #00cccc;
    box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1), 0px 10px 20px rgba(0, 0, 0, 0.05), 0px 20px 20px rgba(0, 0, 0, 0.05), 0px 30px 20px rgba(0, 0, 0, 0.05);
}
table td:hover {
    background: #C1FFC1;
}
table td:click {
    background: #fcc;
}
table td:hover {
    color: #000;
}
table th, table td {
    color: #999;
    border: 1px solid #eee;
    padding: 12px 35px;
    border-collapse: collapse;
}
table th {
    background: #00cccc;
    color: #fff;
    text-transform: uppercase;
    font-size: 12px;
}
table th.last {
    border-right: none;
}
.selected{
    background-color: #C1FFC1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="rest_tab" border="1">
    <tbody>
        <tr>
            <th>Times</th>
            <th></th>
            <th></th>
        </tr>
        <tr>
            <td <="" td=""></td>
            <td align="right">
                <input type="checkbox" class="selectAll" id="Checkbox4" on="">
            </td>
            <td align="right">
                <input type="checkbox" class="selectAll" id="Checkbox5" on="">
            </td>
        </tr>
        <tr>
            <td <="" td=""></td>
            <td align="right">
                <input type="checkbox" class="selectAll" id="Checkbox7" on="">
            </td>
            <td align="right">
                <input type="checkbox" class="selectAll" id="Checkbox8" on="">
            </td>
        </tr>
        <tr>
            <td <="" td=""></td>
            <td align="right">
                <input type="checkbox" class="selectAll" id="Checkbox10" on="">
            </td>
            <td align="right">
                <input type="checkbox" class="selectAll" id="Checkbox11" on="">
            </td>
        </tr>
    </tbody>
</table>

希望对你有帮助

关于javascript - 使用 html 中的复选框在表格上切换颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28998306/

相关文章:

php - 检查选择中的总和值

javascript - JS 触发器仅在每隔一个页面加载时正确触发

javascript - CSS 面板问题

javascript - 使用javascript在工具提示中显示字符串

javascript - 像这个例子跳过去

javascript - 如何使用js更改超过阈值长度的文本颜色

javascript - 在 javascript 上搜索文本

jquery - rails 4 : How to pass a form builder object to a nested form updated with javascript (jQuery)

html - Jekyll - 如何从其他页面中提取 frontmatter 变量

javascript - 弹出几秒钟后自动消失