我正在使用优秀的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;
}
})
但是,当通过搜索过滤掉其中一个选中的行时,这不起作用。
有人可以建议一种方法来改变它,以处理由搜索过滤掉的已检查行吗?
答案 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以获取代码和演示。
有关使用jQuery DataTables复选框的更多信息,请参阅jQuery DataTables - How to add a checkbox column。