首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按类或jquery上的数据筛选表

按类或jquery上的数据筛选表
EN

Stack Overflow用户
提问于 2018-11-23 18:19:25
回答 1查看 733关注 0票数 1
  1. 当我首先选择“图标”显示“未找到”时出错,然后选择"Talisman“而不显示。应该显示“找不到”。
  2. 是否可以这样做呢?

添加到类=f-图标f-环f-颈。然后按类查找值。

选择“图标环颈环颈颈环图标”并显示这条线。使它只在找到匹配时显示。

代码语言:javascript
复制
$(document).ready(function() {
(function() {
  var filters = {
    itemslot1: null,
    itemslot2: null,
    itemslot3: null
  };
  
  function updateFilters() {
    $(".table-data")
      .hide()
      .filter(function() {
        var self = $(this),
          result = true;

        Object.keys(filters).forEach(function(filter) {
          if (
            filters[filter] &&
            filters[filter] != "All"
          ) {
            result = result && filters[filter] === self.data(filter);
          }
        });

        return result;

      })

      .show();
  }

  function bindDropdownFilters() {
    Object.keys(filters).forEach(function(filterName) {
      $("#" + filterName + "-filter").on("change", function() {
        filters[filterName] = this.value;

        updateFilters();

        var $table = $('#filter-table'),
            $colLength = $table.find('thead th').length,
            $filteredCount = $table.find('tbody tr:visible').length;

        console.log($filteredCount);
        if ($filteredCount == 0) {
          $table.find('tbody').append($("<tr />").addClass("no-result").css({
            "text-align": "center"
          }).append($("<td />").attr("colspan", $colLength).html("Not found.")));
        } else {
           $(".no-result").remove();
          }
      });
    });
  }

  bindDropdownFilters();
})();
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='table-filters'>
        <select id="itemslot1-filter">
          <option>All</option> 
          <option value="Icon">Icon</option>
          <option value="Ring">Ring</option>
          <option value="Waist">Waist</option>
          <option value="Talisman">Talisman</option>
          <option value="Sword Knot">Sword Knot</option>
          <option value="Neck">Neck</option>
        </select>
        <select id="itemslot2-filter">
          <option>All</option> 
          <option value="Icon">Icon</option>
          <option value="Ring">Ring</option>
          <option value="Waist">Waist</option>
          <option value="Talisman">Talisman</option>
          <option value="Sword Knot">Sword Knot</option>
          <option value="Neck">Neck</option>
        </select>
        <select id="itemslot3-filter">
          <option>All</option> 
          <option value="Icon">Icon</option>
          <option value="Ring">Ring</option>
          <option value="Waist">Waist</option>
          <option value="Talisman">Talisman</option>
          <option value="Sword Knot">Sword Knot</option>
          <option value="Neck">Neck</option>
        </select>
        </div>
            
        <table id="filter-table">
         <thead>
          <tr>
           <th>Slot 1</th>
           <th>Slot 2</th>
           <th>Slot 3</th>
          </tr>
          </thead>
          <tbody>
           <tr class="table-data" data-itemslot1="Ring" data-itemslot2="Neck" data-itemslot3="Waist">
            <td>Ring</td>
            <td>Neck</td>
            <td>Waist</td>
           </tr>
           <tr class="table-data" data-itemslot1="Neck" data-itemslot2="Waist" data-itemslot3="Ring">
            <td>Neck</td>
            <td>Waist</td>
            <td>Ring</td>
           </tr>
           <tr class="table-data" data-itemslot1="Sword Knot" data-itemslot2="Neck" data-itemslot3="Ring">
            <td>Sword Knot</td>
            <td>Neck</td>
            <td>Ring</td>
           </tr>
           <tr class="table-data" data-itemslot1="Ring" data-itemslot2="Ring" data-itemslot3="Ring">
            <td>Ring</td>
            <td>Ring</td>
            <td>Ring</td>
           </tr>
           <tr class="table-data" data-itemslot1="Ring" data-itemslot2="Ring" data-itemslot3="Talisman">
            <td>Ring</td>
            <td>Ring</td>
            <td>Talisman</td>
           </tr>
          </tbody>
        </table>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-24 00:30:05

isZero提供一个布尔检查,以跟踪是否应该显示或隐藏未找到的内容。

还添加了一个检查,以验证您的table-data是可见的,而“未找到”将被删除。

当您选择图标,而不是Talisman的选项,现在找不到了。

代码语言:javascript
复制
$(document).ready(function() {
  (function() {
    var filters = {
      itemslot1: null,
      itemslot2: null,
      itemslot3: null
    };

    function updateFilters() {
      $(".table-data")
        .hide()
        .filter(function() {
          var self = $(this),
            result = true;

          Object.keys(filters).forEach(function(filter) {
            if (
              filters[filter] &&
              filters[filter] != "All"
            ) {
              result = result && filters[filter] === self.data(filter);
            }
          });

          return result;

        })

        .show();
    }

    function bindDropdownFilters() {
      var isZero = false;
      Object.keys(filters).forEach(function(filterName) {
        $("#" + filterName + "-filter").on("change", function() {
          filters[filterName] = this.value;

          updateFilters();

          var $table = $('#filter-table'),
            $colLength = $table.find('thead th').length,
            $filteredCount = $table.find('tbody tr:visible').length;

          console.log($filteredCount);
          if ($filteredCount == 0 && !isZero) {
            isZero = true;
            $table.find('tbody').append($("<tr />").addClass("no-result").css({
              "text-align": "center"
            }).append($("<td />").attr("colspan", $colLength).html("Not found.")));
          } else if ($('.table-data').css('display') != 'none') {
            $(".no-result").remove();
            isZero = false;
          }
        });
      });
    }

    bindDropdownFilters();
  })();
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='table-filters'>
  <select id="itemslot1-filter">
    <option>All</option>
    <option value="Icon">Icon</option>
    <option value="Ring">Ring</option>
    <option value="Waist">Waist</option>
    <option value="Talisman">Talisman</option>
    <option value="Sword Knot">Sword Knot</option>
    <option value="Neck">Neck</option>
  </select>
  <select id="itemslot2-filter">
    <option>All</option>
    <option value="Icon">Icon</option>
    <option value="Ring">Ring</option>
    <option value="Waist">Waist</option>
    <option value="Talisman">Talisman</option>
    <option value="Sword Knot">Sword Knot</option>
    <option value="Neck">Neck</option>
  </select>
  <select id="itemslot3-filter">
    <option>All</option>
    <option value="Icon">Icon</option>
    <option value="Ring">Ring</option>
    <option value="Waist">Waist</option>
    <option value="Talisman">Talisman</option>
    <option value="Sword Knot">Sword Knot</option>
    <option value="Neck">Neck</option>
  </select>
</div>

<table id="filter-table">
  <thead>
    <tr>
      <th>Slot 1</th>
      <th>Slot 2</th>
      <th>Slot 3</th>
    </tr>
  </thead>
  <tbody>
    <tr class="table-data" data-itemslot1="Ring" data-itemslot2="Neck" data-itemslot3="Waist">
      <td>Ring</td>
      <td>Neck</td>
      <td>Waist</td>
    </tr>
    <tr class="table-data" data-itemslot1="Neck" data-itemslot2="Waist" data-itemslot3="Ring">
      <td>Neck</td>
      <td>Waist</td>
      <td>Ring</td>
    </tr>
    <tr class="table-data" data-itemslot1="Sword Knot" data-itemslot2="Neck" data-itemslot3="Ring">
      <td>Sword Knot</td>
      <td>Neck</td>
      <td>Ring</td>
    </tr>
    <tr class="table-data" data-itemslot1="Ring" data-itemslot2="Ring" data-itemslot3="Ring">
      <td>Ring</td>
      <td>Ring</td>
      <td>Ring</td>
    </tr>
    <tr class="table-data" data-itemslot1="Ring" data-itemslot2="Ring" data-itemslot3="Talisman">
      <td>Ring</td>
      <td>Ring</td>
      <td>Talisman</td>
    </tr>
  </tbody>
</table>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53451394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档