[英]Datatables issue: How can I click a checkbox and then highlight the row and vice versa?
我有一个表格行,想要在表格中获得一个单元格,例如:
<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>
ps在您粘贴的代码段中,您input
了一个无效的input
标签来包装td
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.