从DataTable获取所有行,包括那些已过滤掉的行

时间:2015-09-28 15:26:54

标签: jquery datatables datatables-1.10

我正在使用优秀的jQuery Datatables插件。

我有一个简单的表格,每行的第一列是一个类.chk-items的复选框。

我希望用户能够选择多个行,然后对已选中复选框的所有行执行操作。这可能包括检查一个或多个框,使用SEARCH工具进行过滤,然后检查其他框。这当然意味着某些被检查的行不再可见(即它们已被过滤掉)。

我目前有以下方法来处理已检查的行:

var tableData = new Array([]);
var idx = 0;
$('.chk-items').each(function() {
//Add checked items to next tab
    if($(this).is(':checked')) {
        //Get the selected row data into an array
        var rowData = (this).closest('tr').children("td").map(function() {
            return $(this).text();
        }).get();
        tableData[idx] = rowData;
        idx = idx + 1;
    }
})

但是,当通过搜索过滤掉其中一个选中的行时,这不起作用。

有人可以建议一种方法来改变它,以处理由搜索过滤掉的已检查行吗?

1 个答案:

答案 0 :(得分:1)

使用DataTables API方法$()对整个表执行jQuery选择操作。

var table = $('#example').DataTable();

// ... skipped ...

var tableData = [];
table.$('.chk-items').each(function() {
   // Add checked items to next tab
    if($(this).is(':checked')) {
        // Get the selected row data into an array
        var rowData = $(this).closest('tr').children("td").map(function() {
            return $(this).text();
        });

        tableData.push(rowData);
    }
});

样本

请参阅this jsFiddle以获取代码和演示。

LINKS

有关使用jQuery DataTables复选框的更多信息,请参阅jQuery DataTables - How to add a checkbox column