javascript - 数据表问题 : How can I click a checkbox and then highlight the row and vice versa?

标签 javascript jquery datatables

我有一个表格行,想要在表格中获取一个单元格,例如:

<tr>
    <td><input type="checkbox"id="delete" value="1"></td>
                        <td id="rowid">1</td>
                        <input 
                        <td>2</td>
                        <td>test</td>
                        <td>email@gmail.com</td>
                        <td>1</td>
                        <td>5</td>
                        <td>2018-12-31 09:28:29 </td>
        </tr>

我有 jquery 代码:

$(document).ready(function() {
    var table = $('#clients').DataTable();

    $('#clients tbody').on( 'click', 'tr', function () {
        $(this).toggleClass('selected');
        var _element = $(this).find('input[type=checkbox]');
        var checkboxStatus = _element.prop('checked'); //true or false
        _element.prop('checked',!checkboxStatus); // If checkbox is 
        //checked, turn it to uncheck and if is unchecked, check it
} );
    } );

    $('#button').click( function () {
        alert( table.rows('.selected').data().length +' row(s) selected' );
    } );
} );

但是现在,当我单击复选框时,它不会被选中,并且“checked”类不会添加到复选框输入中。

我希望如果我单击整个复选框,则该复选框将被选中。 现在可以使用,但是当我选中该复选框时,该复选框会突出显示,但该复选框未选中。

最佳答案

在单击复选框时添加事件监听器,停止将事件传播到该行,然后将类切换到复选框的最近行:

$(document).ready(() => {
  $('#clients tbody').on('click', 'tr', function(e) {
    $(this).toggleClass('selected');
    var _element = $(this).find('input[type=checkbox]');
    var checkboxStatus = _element.prop('checked');
    _element.prop('checked', !checkboxStatus);
  });
  
  $('#clients tbody').on('click', 'input[type=checkbox]', function(e) {
    e.stopPropagation();
    $(this).closest('tr').toggleClass('selected');
  });
});
.selected {
  background: red;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="clients">
  <tbody>
    <tr>
      <td><input type="checkbox" id="delete" value="1" /></td>
      <td id="rowid">1</td>
      <td>2</td>
      <td>test</td>
      <td>email@gmail.com</td>
      <td>1</td>
      <td>5</td>
      <td>2018-12-31 09:28:29 </td>
    </tr>
</table>

附:在您粘贴的代码片段中,您有一个无效的 input 标记,其中包装了 td

关于javascript - 数据表问题 : How can I click a checkbox and then highlight the row and vice versa?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54168032/

相关文章:

javascript - 多个 Canvas 和 JSON 加载几何图形时出现 Three.js 错误

javascript - jQuery 数据表 : Uncaught TypeError: Cannot read property 'length' of undefined

javascript - 在数据表中初始化(初始化完成)后禁用排序列

javascript - 如何使用 Velocity.js 动画化翻译属性?

jQuery live 似乎没有绑定(bind)点击事件

jquery - 数据表标题已移动

javascript - 从 StencilJS 到 Angular 的事件发射器

javascript - Facebook 页面选项卡应用程序签名请求应用程序数据丢失

javascript - 使用 javascript 绘制彩色散点图

jquery - 对象不支持属性或方法 'indexOf'