【问题标题】:Select all contents from all pages from a DataTable using Jquery使用 Jquery 从 DataTable 中选择所有页面的所有内容
【发布时间】:2019-07-15 00:03:47
【问题描述】:

我正在使用一个包含多个页面的 DataTable。我使用全选(基于 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;                      
           });         
        }
    });
});

有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: select jquery-datatables


    【解决方案1】:

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

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

    $('#checkall').click(function(){
        table.$('.checkbox1').prop('checked', this.checked);
    });
    

    【讨论】:

    • 对我来说很好:)
    【解决方案2】:

    通过在 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(.. 并定位多个包含不同复选框的列等。

    【讨论】:

    • 为什么table.cell(index, 0).data($(this).html());弄乱了我的html?
    • @Loko, ??我应该怎么知道?我需要查看代码,不能基于“弄乱我的 html”语句说任何话。希望我能:)
    • @davidkonrad 对不起,我没有像 FIX MY CODE PLS 中那样。更像是,那段代码实际上会以什么方式弄乱任何 html?
    • 嘿@Loko,不能说,如果它是纯HTML应该没有问题。但是,我必须承认这是完全不必要的。这实际上不是很好的答案;如果你使用prop 而不是attr 那么你不需要这个“hack”。已经更新了答案和小提琴,希望它也对你更好。感谢您指出这个旧答案的问题!
    • @davidkonrad 很高兴我能无意中提供帮助,但我找到了替代解决方案。无论如何谢谢:)
    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多