2015-04-18 73 views
2

我正在使用其中包含多个页面的DataTable。我使用Select All(基于jQuery)功能,可以很好地选择当前正在查看的页面中的所有记录。但问题是使用Jquery从DataTable的所有页面中选择所有内容

我不能够选择在表

在不同的页面中的所有记录。如果我在一个页面中选择记录并移动到下一个页面,在第一页中选择记录丢失。

选择所有脚本

$(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;      
      });   
     } 
    }); 
}); 

能有人帮助?

谢谢

回答

5

通过在DOM上使用jQuery,您只能看到可见的行。您将需要访问表的内部版本,即其“缓存”。这里是一个“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(..以及将多个列放置在不同的复选框等。

+0

好的答案〜upvoted –

+0

为什么'table.cell(指数0)。数据($(本)的.html());'搞乱我的HTML? – Loko

+0

@Loko,??我应该怎么知道?我需要查看代码,不能基于“搞乱我的html”语句说出任何内容。希望我可以:) – davidkonrad

0

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

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

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