DataTables 更改所有页面上的复选框
DataTables change checkboxes over all pages
我正在使用 DataTables 列出 "events" 显示在我的网络应用程序的每个页面上。
对于每一页,我都有一列,每个事件都是一行,每页都有复选框。 (让您了解它的外观:http://i.stack.imgur.com/6QhsJ.png)
当我点击一个页面时,它应该选中所有复选框,但是这些复选框只在 DataTable 的当前页面上被选中。
感谢任何帮助!
编辑: 这是我的问题的 JSFiddle (https://jsfiddle.net/2n3dyLhh/2/)
HTML
<table id="eventsTable" class="table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Checkbox<input type="checkbox" id="checkall"/></th>
</tr>
</thead>
<tbody>
<tr>
<td>Tiger Nixon</td>
<td><input type="checkbox" id="checkbox1"/></td>
</tr>
<tr>
<td>Garrett Winters</td>
<td><input type="checkbox" id="checkbox2"/></td>
</tr>
<tr>
<td>Ashton Cox</td>
<td><input type="checkbox" id="checkbox3"/></td>
</tr>
<tr>
<td>Cedric Kelly</td>
<td><input type="checkbox" id="checkbox4"/></td>
</tr>
<tr>
<td>Airi Satou</td>
<td><input type="checkbox" id="checkbox5"/></td>
</tr>
<tr>
<td>Brielle Williamson</td>
<td><input type="checkbox" id="checkbox6"/></td>
</tr>
<tr>
<td>Herrod Chandler</td>
<td><input type="checkbox" id="checkbox7"/></td>
</tr>
<tr>
<td>Rhona Davidson</td>
<td><input type="checkbox" id="checkbox8"/></td>
</tr>
<tr>
<td>Colleen Hurst</td>
<td><input type="checkbox" id="checkbox9"/></td>
</tr>
<tr>
<td>Sonya Frost</td>
<td><input type="checkbox" id="checkbox10"/></td>
</tr>
<tr>
<td>Jena Gaines</td>
<td><input type="checkbox" id="checkbox11"/></td>
</tr>
<tr>
<td>Quinn Flynn</td>
<td><input type="checkbox" id="checkbox12"/></td>
</tr>
</tbody>
</table>
JavaScript
$(document).ready(function() {
$.extend($.fn.dataTable.defaults, {
"columns": [null, { "orderable": false }]
});
$('#eventsTable').DataTable();
});
$("#checkall").on('click', function() {
if (this.checked) {
for(var i = 1; i <= 12; i++) {
var id = "#checkbox" + i;
$(id).prop('checked', true);
}
} else {
for(var i = 1; i <= 12; i++) {
var id = "#checkbox" + i;
$(id).prop('checked', false);
}
}
});
您的点击处理程序应更改为:
$("#checkall").on('click', function () {
$('#eventsTable').DataTable()
.column(1)
.nodes()
.to$()
.find('input[type=checkbox]')
.prop('checked', this.checked);
});
有关代码和演示,请参阅 this example。
考虑使用 jQuery DataTables Checkboxes 来更轻松地处理由 jQuery DataTables 提供支持的 table 中的复选框。
$("#chbox").click(function () {
//chbox is main checkbox
var rows,checked;
var rows = $("#viewlist").dataTable().$('tr', {"filter": "applied"});// viewlist is
checked = $(this).prop('checked');
$.each(rows, function () {
var checkbox = $($(this).find('td').eq(0)).find('input').prop('checked', checked);
});
});
我正在使用 DataTables 列出 "events" 显示在我的网络应用程序的每个页面上。
对于每一页,我都有一列,每个事件都是一行,每页都有复选框。 (让您了解它的外观:http://i.stack.imgur.com/6QhsJ.png)
当我点击一个页面时,它应该选中所有复选框,但是这些复选框只在 DataTable 的当前页面上被选中。
感谢任何帮助!
编辑: 这是我的问题的 JSFiddle (https://jsfiddle.net/2n3dyLhh/2/)
HTML
<table id="eventsTable" class="table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Checkbox<input type="checkbox" id="checkall"/></th>
</tr>
</thead>
<tbody>
<tr>
<td>Tiger Nixon</td>
<td><input type="checkbox" id="checkbox1"/></td>
</tr>
<tr>
<td>Garrett Winters</td>
<td><input type="checkbox" id="checkbox2"/></td>
</tr>
<tr>
<td>Ashton Cox</td>
<td><input type="checkbox" id="checkbox3"/></td>
</tr>
<tr>
<td>Cedric Kelly</td>
<td><input type="checkbox" id="checkbox4"/></td>
</tr>
<tr>
<td>Airi Satou</td>
<td><input type="checkbox" id="checkbox5"/></td>
</tr>
<tr>
<td>Brielle Williamson</td>
<td><input type="checkbox" id="checkbox6"/></td>
</tr>
<tr>
<td>Herrod Chandler</td>
<td><input type="checkbox" id="checkbox7"/></td>
</tr>
<tr>
<td>Rhona Davidson</td>
<td><input type="checkbox" id="checkbox8"/></td>
</tr>
<tr>
<td>Colleen Hurst</td>
<td><input type="checkbox" id="checkbox9"/></td>
</tr>
<tr>
<td>Sonya Frost</td>
<td><input type="checkbox" id="checkbox10"/></td>
</tr>
<tr>
<td>Jena Gaines</td>
<td><input type="checkbox" id="checkbox11"/></td>
</tr>
<tr>
<td>Quinn Flynn</td>
<td><input type="checkbox" id="checkbox12"/></td>
</tr>
</tbody>
</table>
JavaScript
$(document).ready(function() {
$.extend($.fn.dataTable.defaults, {
"columns": [null, { "orderable": false }]
});
$('#eventsTable').DataTable();
});
$("#checkall").on('click', function() {
if (this.checked) {
for(var i = 1; i <= 12; i++) {
var id = "#checkbox" + i;
$(id).prop('checked', true);
}
} else {
for(var i = 1; i <= 12; i++) {
var id = "#checkbox" + i;
$(id).prop('checked', false);
}
}
});
您的点击处理程序应更改为:
$("#checkall").on('click', function () {
$('#eventsTable').DataTable()
.column(1)
.nodes()
.to$()
.find('input[type=checkbox]')
.prop('checked', this.checked);
});
有关代码和演示,请参阅 this example。
考虑使用 jQuery DataTables Checkboxes 来更轻松地处理由 jQuery DataTables 提供支持的 table 中的复选框。
$("#chbox").click(function () {
//chbox is main checkbox
var rows,checked;
var rows = $("#viewlist").dataTable().$('tr', {"filter": "applied"});// viewlist is
checked = $(this).prop('checked');
$.each(rows, function () {
var checkbox = $($(this).find('td').eq(0)).find('input').prop('checked', checked);
});
});