使用Jquery从DataTable中选择所有页面中的所有内容

sal*_*med 4 select jquery-datatables

我正在使用一个包含多个页面的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;                      
           });         
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

谢谢

dav*_*rad 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();
});
Run Code Online (Sandbox Code Playgroud)

演示 - > http://jsfiddle.net/05xnxzbd/

事实上,上述情况可以通过几种不同的方式完成.这是最简单的方法,我们知道第一列上存在一个复选框.使用to$()让我们立即使用jQuery的内容.

您也可以迭代table.rows().data().each(function(..并定位包含不同复选框的多个列,依此类推.


Gyr*_*com 6

jQuery DataTables 从 DOM 中删除未显示在屏幕上的元素。

使用$()DataTables API 方法可以访问表中的所有节点,而不仅仅是屏幕上显示的节点。

$('#checkall').click(function(){
    table.$('.checkbox1').prop('checked', this.checked);
});
Run Code Online (Sandbox Code Playgroud)