jQuery filter() 方法

jQuery 筛选过滤

使用 jQuery 筛选/搜索 特定元素。


表格筛选

对表中的项目执行不区分大小写的搜索:

在输入字段中输入一些内容,在表格中搜索名字、姓氏或 Email:

姓氏名称Email
JohnDoejohn@example.com
MaryMoemary@mail.com
JulyDooleyjuly@greatstuff.com
AnjaRavendalea_r@test.com

代码如下:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
  5. <script>
  6. $(document).ready(function(){
  7. $("#myInput").on("keyup", function() {
  8. var value = $(this).val().toLowerCase();
  9. $("#myTable tr").filter(function() {
  10. $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
  11. });
  12. });
  13. });
  14. </script>
  15. <style>
  16. table {
  17. font-family: arial, sans-serif;
  18. border-collapse: collapse;
  19. width: 100%;
  20. }
  21. td, th {
  22. border: 1px solid #dddddd;
  23. text-align: left;
  24. padding: 8px;
  25. }
  26. tr:nth-child(even) {
  27. background-color: #dddddd;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <h2>筛选表格</h2>
  33. <p>在输入字段中输入一些内容,在表格中搜索名字、姓氏或 Email:</p>
  34. <input id="myInput" type="text" placeholder="Search..">
  35. <br><br>
  36. <table>
  37. <thead>
  38. <tr>
  39. <th>名称</th>
  40. <th>姓氏</th>
  41. <th>Email</th>
  42. </tr>
  43. </thead>
  44. <tbody id="myTable">
  45. <tr>
  46. <td>John</td>
  47. <td>Doe</td>
  48. <td>john@example.com</td>
  49. </tr>
  50. <tr>
  51. <td>Mary</td>
  52. <td>Moe</td>
  53. <td>mary@mail.com</td>
  54. </tr>
  55. <tr>
  56. <td>July</td>
  57. <td>Dooley</td>
  58. <td>july@greatstuff.com</td>
  59. </tr>
  60. <tr>
  61. <td>Anja</td>
  62. <td>Ravendale</td>
  63. <td>a_r@test.com</td>
  64. </tr>
  65. </tbody>
  66. </table>
  67. <p>请注意,我们在 tbody 中开始搜索,以防止筛选表头。</p>
  68. </body>
  69. </html>
实例说明:

我们使用 jQuery 循环遍历表格的每一行,以检查是否有任何文本值与输入字段的值匹配。 toggle() 方法隐藏与搜索不匹配的行(display:none)。我们使用 toLowerCase() 方法将文本转换为小写,这使得搜索不区分大小写(搜索时可以使用 "john", "John", 甚至 "JOHN")。


过滤列表

对列表中的项执行不区分大小写的搜索:

在输入字段中输入一些内容以搜索列表中的项:

  • First item
  • Second item
  • Third item
  • Fourth

代码如下:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
  5. <script>
  6. $(document).ready(function(){
  7. $("#myInput").on("keyup", function() {
  8. var value = $(this).val().toLowerCase();
  9. $("#myList li").filter(function() {
  10. $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
  11. });
  12. });
  13. });
  14. </script>
  15. </head>
  16. <body>
  17. <h2>过滤列表</h2>
  18. <p>在输入字段中输入一些内容,以在列表中搜索匹配的项:</p>
  19. <input id="myInput" type="text" placeholder="Search..">
  20. <br>
  21. <ul id="myList">
  22. <li>First item</li>
  23. <li>Second item</li>
  24. <li>Third item</li>
  25. <li>Fourth</li>
  26. </ul>
  27. </body>
  28. </html>

过滤其他

这是一个段落

这是 div 中的 div

另一个段落

代码如下:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
  5. <script>
  6. $(document).ready(function(){
  7. $("#myInput").on("keyup", function() {
  8. var value = $(this).val().toLowerCase();
  9. $("#myDIV *").filter(function() {
  10. $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
  11. });
  12. });
  13. });
  14. </script>
  15. </head>
  16. <body>
  17. <h2>过滤其他</h2>
  18. <p>在输入字段中键入一些内容,在div元素中搜索 id="myDIV" 的特定文本:</p>
  19. <input id="myInput" type="text" placeholder="Search..">
  20. <div id="myDIV">
  21. <p>这是一个段落</p>
  22. <div>这是 div 中的 div</div>
  23. <button style="margin:8px 4px 8px 0">这是按钮</button><button style="margin:8px 0">这是另一个按钮</button>
  24. <p>另一个段落</p>
  25. </div>
  26. </body>
  27. </html>