18910140161

JavaScript--获取页面上的所有元素并在过滤器堆栈溢出时隐藏它们

顺晟科技

2022-10-19 12:30:06

135

我有一些东西可以过滤页面上的卡片组,它工作得很好,直到我尝试向每个组添加节标题。理想情况下,当显示“No Results”块时,我希望所有的节头都消失。

我知道获取节头类名的after行只拉入第一行,但是当我移除它时,我会得到一个“Style is Undefined”错误。它不应该用指定的类名获取每个元素吗?


顺晟科技:

我用来找出标题以设置它的显示/隐藏时间。

默认情况下,我们应该隐藏。只要显示它。

所以基本上,我将您的代码更新为以下代码:

var $filterCheckboxes = $('input[type="checkbox"]');
$filterCheckboxes.on("change", function () {
  $(".card-grid").show();
  var selectedFilters = {};
  $filterCheckboxes.filter(":checked").each(function () {
    if (!selectedFilters.hasOwnProperty(this.name)) {
      selectedFilters[this.name] = [];
    }
    selectedFilters[this.name].push(this.value);
  });
  var $filteredResults = $(".card");
  $.each(selectedFilters, function (name, filterValues) {
    $filteredResults = $filteredResults.filter(function () {
      var matched = false,
        currentFilterValues = $(this).data("category").split(" ");
      $.each(currentFilterValues, function (_, currentFilterValue) {
        if ($.inArray(currentFilterValue, filterValues) != -1) {
          matched = true;
          return false;
        }
      });
      return matched;
    });
  });
  $(".card").hide().filter($filteredResults).show();
  var all_hidden = true;
  $(".card").each(function (index) {
    if ($(this).is(":visible")) {
      all_hidden = false;
      document.getElementsByClassName("no-results")[0].style.display = "none";
      document.getElementsByClassName("section-header")[0].style.display =
        "block";
    }
  });
  if (all_hidden) {
    $(".card-grid").hide();
    document.getElementsByClassName("no-results")[0].style.display = "block";
    document.getElementsByClassName("section-header")[0].style.display = "none";
  }
});

您可以在这里看到大量的演示:

  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航