我正在使用一个包含多个页面的DataTable。我使用Select All(基于jQuery)功能,可以很好地选择当前正在查看的页面中的所有记录。但问题是
我无法在表格的不同页面中选择所有记录
如果我在一个页面中选择记录并转到下一页,则第一页中选择的记录将丢失。
选择所有脚本
$(document).ready(function() {
$('#checkall').click(function(event) { //on click
if(this.checked) { // check select status
$('.checkbox1').each(function() {
this.checked = true;
});
}else{
$('.checkbox1').each(function() {
this.checked = false;
});
}
});
});
有人能帮忙吗?
由于
答案 0 :(得分:6)
通过在DOM上使用jQuery,您只能访问可见行。您将需要访问表的dataTables内部版本,即其“缓存”。这是一个迭代所有行的“checkall”函数,更改了类.checkbox1
的复选框的选中状态:
$('#checkall').click(function(event) { //on click
var checked = this.checked;
table.column(0).nodes().to$().each(function(index) {
if (checked) {
$(this).find('.checkbox1').prop('checked', 'checked');
} else {
$(this).find('.checkbox1').removeProp('checked');
}
});
table.draw();
});
演示 - > http://jsfiddle.net/05xnxzbd/
事实上,上述情况可以通过几种不同的方式完成。这是最简单的方法,我们知道第一列上存在一个复选框。使用to$()
让我们立即在内容上使用jQuery。
您也可以迭代table.rows().data().each(function(..
并定位包含不同复选框的多个列,依此类推。
答案 1 :(得分:0)
jQuery DataTables从DOM中删除未在屏幕上显示的元素。
使用$()
API方法可以访问表格中的所有节点,而不仅仅是屏幕上显示的节点。
$('#checkall').click(function(){
table.$('.checkbox1').prop('checked', this.checked);
});