【发布时间】:2018-11-28 13:53:28
【问题描述】:
我有一张用数据表制作的表格。有一个复选框,当单击该复选框时,它会过滤表格以仅显示我想查看的数据。问题是当我取消选中该复选框时,表格会出现问题。 table.destroy() 函数似乎确实将表格恢复到原来的样子,尽管它看起来破坏得有点太多(每页的行突然被忽略 + 不能再点击单元格,这会在另一个窗口中打开)。我猜destroy() 不是在未选中时恢复到原始表/数据的正确方法。那么正确的做法是什么?
会发生这样的事情:
- 点击复选框:正确过滤数据
- 取消选中复选框:表格看起来好像恢复正常(但实际上并没有)
- 再次选中复选框:不再正确过滤数据。 (表格现在是空的)
- 现在无论我选中还是取消选中都没有关系,表格保持不变(空)
这是我的代码:
var checkbox = $("#checkB");
checkbox.click(function () {
var table = $('#TABLE_NAME').DataTable();
if (checkbox.is(":checked")) {
$.fn.dataTable.ext.search.push(
function (settings, data, dataIndex) {
var num = Number(data[4]);
if (num > 0) {
return true;
}
return false;
}
);
table.draw();
}
else {
table.destroy();
}
});
【问题讨论】:
-
快速编辑:我注意到在通过“table.destroy();”之后使用断点时部分,然后它会尝试返回并读取“var num = Number(data[4]);”等等。鉴于该代码在 "if (checkbox.is(":checked"))" 内,这怎么可能呢?即使未选中复选框,该代码仍在该代码中通读....太混乱了。
标签: javascript search checkbox datatables toggle