Jquery 从DataTable中获取所有行,包括筛选出的行

Jquery 从DataTable中获取所有行,包括筛选出的行,jquery,datatables,datatables-1.10,Jquery,Datatables,Datatables 1.10,我正在使用优秀的jquerydatatables插件 我有一个简单的表,其中每行的第一列是一个带有class.chk项的复选框 我希望用户能够选择多行,然后对选中复选框的所有行执行操作。这可能包括选中一个或多个框,使用搜索工具进行筛选,然后选中其他框。当然,这意味着选中的某些行不再可见,即它们已被过滤掉 我当前有以下内容来处理选中的行: var tableData = new Array([]); var idx = 0; $('.chk-items').each(function() { //

我正在使用优秀的jquerydatatables插件

我有一个简单的表,其中每行的第一列是一个带有class.chk项的复选框

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

我当前有以下内容来处理选中的行:

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;
    }
})
但是,当一个选中的行被搜索过滤掉时,这不起作用

是否有人可以建议一种方法来更改此设置,以同时处理搜索筛选出的已签出行?

解决方案 使用DataTables API方法对完整表执行jQuery选择操作

var table=$'example'.DataTable; // ... 跳过。。。 var tableData=[]; 表.$'.chk items'.eachfunction{ //将选中的项目添加到下一个选项卡 如果$this.is':选中'{ //将所选行数据获取到数组中 var rowData=$this.closest'tr'.childrentd.mapfunction{ 返回$this.text; }; tableData.pushrowData; } }; 演示 有关代码和演示,请参阅

链接
有关在jQuery数据表中使用复选框的更多信息,请参阅。

筛选行时会发生什么,它们是否获得要检查的类。比如说,看不见,过滤过。或者过滤后的项目是否完全从dom中删除?它们可能会被删除,但由于它们在Firebug的dom面板中不再可见,因此答案并不简单。我猜我可以使用var rows=$myTable.dataTable.fnGetNodes;但是我正在努力让它正常工作。我不认为这些行会被完全删除,因为删除筛选器字符串会将隐藏的行带回来。谢谢,但这不是很有效。在中添加了这个,现在得到TypeError:a为null…ce,e};空==c&&b=h.Eventc+.dt,ha.nTable.triggerb,e,d.pushb.result。。。从FireBug控制台输出复制。@SiStone,您是否将示例更改为表ID?还可以使用未统一的DataTables JS文件查看错误发生的位置。你能拿出一把小提琴来演示这个错误吗?是的,我确实将选择器更改为我的表ID。我将尝试使用未统一的JS文件,但错误来自jQuery.JS,而不是DataTables。我会试着把一把小提琴放在一起,但由于桌子的结构,这是很复杂的。请容忍我…@SiStone,请看我的解决方案演示。好吧,现在感觉自己像个十足的笨蛋。已更改选择器,但引入了键入错误。。。已经更正了输入错误,但是当我选择行时,我在处理所选行的代码中得到了一个未定义的输出。