2015-04-18 72 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); 
});