我写了一个过滤复选框表的方法,这里是:
this.filterTableByColumn = function (filters) {
if (!this.form[this.currentColumn])
return;
var table = this.table;
filterTable();
// Functions
function filterTable() {
table.find('tr:visible').each(function () {
var row = $(this);
if (!row.hasClass("table-row-header")) {
for (var index in filters) {
if (filters[index].length) {
var row = $(this);
rowMustBeShown(row, filters) ? row.show() : row.hide();
}
}
}
});
}
function rowMustBeShown(row, filters) {
var condition = false;
for (var index in filters) {
if (filters[index].length)
condition = checkRowByFilter(filters[index], row, index);
}
return condition;
}
function checkRowByFilter(filter, row, index) {
var condition2 = false;
var colIndex = index - 1;
if (filter.length) {
filter.forEach(function (filterItem) {
var cell = row.find("td:eq(" + colIndex + "):contains(" + filterItem + ")");
if (cell.text().indexOf(filterItem) >= 0)
condition2 = true;
});
}
return condition2;
}
}
在filters参数中,我得到一个带有两个复选框数组的对象:
{
5: ["ended", "confirmed"]
7: ["on-line"]
}
在上面的对象示例的情况下,该方法显示带有单元格的所有行,这些单元格包含“在线”,“结束”,“已确认”。我想重新制作显示所有单元格包含“在线”的行的方法,其中所有单元格也包含“结束”,“已确认”的单元格。我已经没有想法了。有人可以帮忙吗?