取消选中所有复选框时如何保持整个表格可见

时间:2019-04-01 21:21:27

标签: javascript jquery

当我使用复选框时,一切都很好,并且排序/过滤工作正常,直到我取消选中所有内容为止。然后所有数据都消失了。

我希望取消选中复选框后所有数据都可见。我该如何实现?

顺便说一句。我使用的代码不是我的。我是JS / JQuery的菜鸟。

非常感谢您的帮助。

我一直在寻找解决方案并尝试了数十种选择,但是我是菜鸟,我无法弄清楚。

一切都可以在小提琴上找到:http://jsfiddle.net/kXNAg/

$(":checkbox").change(function() {
var checkedValues = $(":checkbox:checked").map(function() {
    return this.value;
}).get();

$("tbody tr").hide();
for (var i = 0; i < checkedValues.length; i++) {
    $("tbody tr td:contains('" + checkedValues[i] + "')").parent("tr").show();
}
});

实际:您单击复选框,对表进行排序,一切都很好,然后您取消选中所有内容,并且数据被隐藏。

预期:像上面一样,但是当您取消选中复选框时,表数据都是可见的。

2 个答案:

答案 0 :(得分:0)

如果未进行任何检查,则需要返回默认状态:

if(checkedValues.length === 0) return $("tbody tr").show();

在此处结帐:http://jsfiddle.net/gmeo64dx/

答案 1 :(得分:0)

检查checkedValues数组的长度并做出相应的反应

$(":checkbox").change(function() {
  var checkedValues = $(":checkbox:checked").map(function() {
    return this.value;
  }).get();

  if (!checkedValues.length) {
    $("tbody tr").show();
  } else {
    $("tbody tr").hide();
    for (var i = 0; i < checkedValues.length; i++) {
      $("tbody tr td:contains('" + checkedValues[i] + "')").parent("tr").show();
    }
  }
});