javascript - jquery 中的过滤器仅显示名字 td 值

标签 javascript jquery

$(document).ready(function(){
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").parent().siblings(":first").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Filterable Table</h2>

<input id="myInput" type="text" placeholder="Search..">
<br><br>

<table>
  <thead>
    <tr>
      <th>Firstname</th>
      <th>Lastname</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody id="myTable">
    <tr>
      <td>John</td>
      <td>Doe</td>
      <td>john@example.com</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>
    </tr>
    <tr>
      <td>Anja</td>
      <td>Ravendale</td>
      <td>a_r@test.com</td>
    </tr>
  </tbody>
</table>

尝试在输入字段中键入内容以在表中搜索名字

过滤名字的 td 以仅显示名字与表中的值匹配。我尝试过,但不起作用,请指导

还请解释一下我的代码有什么问题 谢谢

最佳答案

如果您只想搜索名字。使用可以使用如下代码:

$(document).ready(function() {
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).find("td:first").text().toLowerCase().indexOf(value) > -1)
    });
  });
});

删除 .parent().siblings(":first") 并添加 .find("td:first") 以搜索每行中的第一个 td ,又名名字

演示

$(document).ready(function() {
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).find("td:first").text().toLowerCase().indexOf(value) > -1)
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Filterable Table</h2>

<input id="myInput" type="text" placeholder="Search..">
<br><br>

<table>
  <thead>
    <tr>
      <th>Firstname</th>
      <th>Lastname</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody id="myTable">
    <tr>
      <td>John</td>
      <td>Doe</td>
      <td>john@example.com</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>
    </tr>
    <tr>
      <td>Anja</td>
      <td>Ravendale</td>
      <td>a_r@test.com</td>
    </tr>
  </tbody>
</table>

关于javascript - jquery 中的过滤器仅显示名字 td 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47951972/

相关文章:

javascript - 更改单选按钮上的标签边框颜色。样式化组件和 React JS

javascript - 不必要的 for 循环迭代会影响速度吗?

javascript - 如何在水平容器中显示用户列表,而不是垂直且不包含的?

javascript - 多个元素具有相同的类,仅获取单击元素的文本

javascript - 如何以逗号分隔获取具有相同键值的对象

javascript - 非法字符,Javascript

javascript - 从对象内的 JavaScript 数组中获取第一个值

javascript - 功能恰好影响一半的预期元素

jquery:在 [object Object] 中附加文本和对象结果

javascript - 是否可以限制一个 div 可以拥有的最大子级数量?