javascript - 为复杂表构建排序器和过滤器

标签 javascript jquery html frontend

目前我正在构建一个包含大量数据的复杂表,与示例有点相似,我想使用 jquery 添加排序器和过滤器功能,并具有弹出样式,如图像 sample img 谁能提供解决方案吗?

$(document).ready(function() {
  $(".myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>
        <div>
          <input type="text" placeholder="Search for names.." class="myInput">
        </div>
        Firstname
      </th>
      <th>
        <div>
          <input type="text" placeholder="Search for lastnames.." class="myInput"> </div>
        Lastname
      </th>
      <th>
        <div>
          <input type="text" placeholder="Search for email.." class="myInput">
        </div>
        Email
      </th>
      <th>
        <select>
          <option></option>
          <option>x</option>
          <option>N/A</option>
        </select>
        decide
      </th>
    </tr>
  </thead>
  <tbody id="myTable">
    <tr>
      <td>John</td>
      <td>Doe</td>
      <td>john@example.com</td>
      <td>x</td>
    </tr>
    <tr>
      <td>Mary</td>
      <td>Moe</td>
      <td>mary@mail.com</td>
    </tr>
    <tr>
      <td>July</td>
      <td>Dooley</td>
      <td>july@greatstuff.com</td>
      <td>x</td>
    </tr>
    <tr>
      <td>Anja</td>
      <td>Ravendale</td>
      <td>a_r@test.com</td>
      <td></td>
    </tr>
  </tbody>
</table>

我已经添加了到目前为止我所做的juqery工作,似乎它无法对每个列起作用。对于选择部分,我不知道如何像文本部分一样实现

最佳答案

为你做了这个厨师,如果你喜欢的话可以装饰它

jsfiddle

$(document).ready(function() {
  $(".myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});
.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown-content {
  position: absolute;
  background-color: #f9f9f9;
  height:0px;
  min-width: 160px;

  padding: 3px;
  z-index: 1;
  transition:0.3s;
  overflow:hidden;
}

.dropdown:hover .dropdown-content {
  height:50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>
        <div class="dropdown">
          <span>Firstname</span>
          <div class="dropdown-content">
            <p> <input type="text" placeholder="Search for names.." class="myInput"></p>
          </div>
        </div>
      </th>
      <th>
            <div class="dropdown">
  <span>Email</span>
  <div class="dropdown-content">
    <p> <input type="text" placeholder="Search for names.." class="myInput"></p>
  </div>
</div>
      </th>
      <th>
            <div class="dropdown">
  <span>Email</span>
  <div class="dropdown-content">
    <p> <input type="text" placeholder="Search for names.." class="myInput"></p>
  </div>
</div>
      </th>
      <th>
                  <div class="dropdown">
  <span>Email</span>
  <div class="dropdown-content">
    <p>  <select>
          <option></option>
          <option>x</option>
          <option>N/A</option>
        </select></p>
  </div>
</div>
        decide
      </th>
    </tr>
  </thead>
  <tbody id="myTable">
    <tr>
      <td>John</td>
      <td>Doe</td>
      <td>john@example.com</td>
      <td>x</td>
    </tr>
    <tr>
      <td>Mary</td>
      <td>Moe</td>
      <td>mary@mail.com</td>
    </tr>
    <tr>
      <td>July</td>
      <td>Dooley</td>
      <td>july@greatstuff.com</td>
      <td>x</td>
    </tr>
    <tr>
      <td>Anja</td>
      <td>Ravendale</td>
      <td>a_r@test.com</td>
      <td></td>
    </tr>
  </tbody>
</table>

关于javascript - 为复杂表构建排序器和过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51783582/

相关文章:

javascript - 未检测到键盘的按键

javascript - 三JS : Mesh becomes invisible when inside another mesh

javascript - 如何使用 jQuery 模拟用户按键

html - CSS Dropdown,不从父级向下对齐

javascript - 如何使用 requireJS 加载具有非 AMD 和 AMD 库的现有自定义库

html - 居中的 div,最大宽度和两侧的内容

javascript - JavaScript 和 jQuery 中的 this 和 function

javascript - jQuery:在尝试选择动态创建的跨度时被难住了

c# - C# ASP.NET 的级联下拉菜单

javascript - jquery focusin 事件未触发