我有一个表格行,想要在表格中获取一个像这样的单元格:
<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');
$(this)
} );
$('#button').click( function () {
alert( table.rows('.selected').data().length +' row(s) selected' );
} );
} );
但是我如何选中该复选框?
------更新:
$(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' );
} );
} );
但是现在当我单击复选框时,它不会被选中,并且“ selected”类不会添加到。
答案 0 :(得分:1)
将此代码附加到 tr 的 click 事件:
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
更新:
如果您要忽略单击 tr 上的事件,而主要目标是chekcbox,请使用以下代码进行处理:
$('tr input[type=checkbox]').on('click',function(event){
event.stopPropagation();
})
答案 1 :(得分:1)
您应该使用类.delete
而不是id
,因为每行都会重复该复选框。
下面的代码可以识别对tr
的单击,检查是否存在.selected
类,并使复选框紧随其后-即检查是否选中了该行。
希望这会有所帮助
// Add click event to the table, for any row
$('#clients tbody').on('click', 'tr', function() {
// Toggle the selected class
$(this).toggleClass('selected');
// Assign a checked value to the input within that row, the value should match the boolean check for the class active (i.e. false if the class is not present on the row)
$(this).find("input.delete").prop('checked', $(this).hasClass("selected"));
});
// Your button code
$('#button').click(function() {
alert($("#clients tbody tr.selected").length + ' row(s) selected');
});
tr.selected {
background: yellow;
}
<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" class="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>
<tr>
<td><input type="checkbox" class="delete" value="2"></td>
<td id="rowid">2</td>
<td>3</td>
<td>test3</td>
<td>emai23l@gmail.com</td>
<td>2</td>
<td>6</td>
<td>2018-12-31 09:48:29 </td>
</tr>
</tbody>
</table>
<button id="button">How many rows are selected?</button>