Jquery 从DataTable中获取所有行,包括筛选出的行
我正在使用优秀的jquerydatatables插件 我有一个简单的表,其中每行的第一列是一个带有class.chk项的复选框 我希望用户能够选择多行,然后对选中复选框的所有行执行操作。这可能包括选中一个或多个框,使用搜索工具进行筛选,然后选中其他框。当然,这意味着选中的某些行不再可见,即它们已被过滤掉 我当前有以下内容来处理选中的行: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() { //
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,请看我的解决方案演示。好吧,现在感觉自己像个十足的笨蛋。已更改选择器,但引入了键入错误。。。已经更正了输入错误,但是当我选择行时,我在处理所选行的代码中得到了一个未定义的输出。