0

0

使用 jQuery 实现 HTML 表格动态筛选功能教程

碧海醫心

碧海醫心

发布时间:2025-10-12 13:02:37

|

351人浏览过

|

来源于php中文网

原创

使用 jquery 实现 html 表格动态筛选功能教程

本教程将详细指导如何利用 jQuery 为 HTML 表格添加动态筛选功能。我们将探讨常见的实现误区,如选择器使用不当,并提供一个结构清晰、易于理解的解决方案。通过本文,您将掌握使用 `keyup` 事件监听用户输入,结合 `filter` 和 `toggle` 方法实现表格行的实时内容匹配与显示控制,从而提升用户与表格数据的交互体验。

引言:动态表格筛选的重要性

在现代Web应用中,表格是展示大量结构化数据的重要方式。当数据量庞大时,用户往往难以快速定位所需信息。此时,为表格添加动态筛选功能变得尤为重要。通过一个简单的搜索框,用户可以实时过滤表格内容,极大地提升了数据检索的效率和用户体验。本教程将聚焦于如何使用强大的JavaScript库jQuery来实现这一功能。

核心原理:jQuery 动态筛选机制

实现表格动态筛选主要依赖于以下几个jQuery核心方法和概念:

  1. 事件监听 (.on("keyup", function(){...})): 当用户在搜索框中输入或删除字符时,keyup 事件会被触发。我们在此事件处理函数中执行筛选逻辑。
  2. 获取输入值 (.val().toLowerCase()): 获取搜索框中的当前文本内容,并将其转换为小写,以实现不区分大小写的搜索。
  3. 元素筛选 (.filter(function(){...})): 遍历表格中的每一行(或单元格),并根据回调函数的返回值来决定是否保留该元素。
  4. 内容匹配 (.text().toLowerCase().indexOf(value) > -1): 在 filter 的回调函数中,获取当前元素的文本内容,同样转换为小写,然后检查它是否包含搜索值。indexOf() 方法返回子字符串首次出现的索引,如果未找到则返回 -1。
  5. 显示/隐藏元素 (.toggle(boolean)): 根据匹配结果(true 表示匹配,false 表示不匹配),使用 toggle() 方法来显示或隐藏表格行。

HTML 结构准备

一个规范的HTML表格结构对于实现动态筛选至关重要。它应该包含一个搜索输入框,以及具有 (表头)和

(表体)的 元素。特别需要注意的是,id 属性应赋给
元素,而不是 。这是因为筛选操作通常针对整个表格的行进行。

立即学习前端免费学习笔记(深入)”;

以下是一个推荐的HTML结构示例:

Asksia
Asksia

Asksia AI - 最好的AI老师,可靠的作业助手

下载



    
    
    HTML 表格动态筛选
    
    



    
搜索内容:
S.No Testcase Result: SECTION Reason Analysis
0CallsiteMemLeakReportInitialFAILEDsection test_caseMem leak found before the runScript issue
1FinalMemLeakReportFAILEDsection check_final_mem_leaksMemory Leaks FoundScript issue
2CallsiteMemLeakReportFinalFAILEDsection test_caseMem leak found before the runScript issue
3InitialMemLeakReportPASSED
4TriggerInterfaceFlapsPASSED
5TriggerVlanInterfaceFlapsPASSED
6TriggerClearIPOspfProcessPASSED
7TriggerClearIPDTProcessPASSED
8TriggerClearIPRouteProcessPASSED
9TriggerClearAuthSessionsPASSED
10TriggerClearFlowMonitorCacePASSED
11TriggerBgpNeighborFlapPASSED
12TriggerVlanInterfaceFlapsPASSED

JavaScript/jQuery 实现步骤

最初,在尝试实现表格筛选时,一个常见的误区是将 id="myTable" 赋给

元素,并使用 $("#myTable td") 作为筛选目标。然而,正确的做法是让 id="myTable" 属于 标签,并且筛选操作应该作用于 内的每一行 (),而不是单个单元格 ( 元素下的所有 (表格行)。这确保了我们只对数据行进行筛选,而不会影响到表头。
  • filter(function() {...}): 遍历每一个匹配到的
  • 元素。在回调函数中,this 指向当前的 DOM元素。
  • $(this).text().toLowerCase(): 获取当前行的所有文本内容(包括所有单元格的文本),并转换为小写。
  • indexOf(value) > -1: 检查行文本是否包含搜索值。
  • $(this).toggle(isMatch): toggle() 方法根据传入的布尔值决定元素的显示或隐藏。如果 isMatch 为 true,则显示该行;如果为 false,则隐藏该行。
  • 完整示例代码

    将上述HTML结构和JavaScript代码结合起来,即可得到一个功能完整的动态筛选表格。

    
    
    
        
        
        HTML 表格动态筛选教程
        
        
        
    
    
    
        

    动态表格筛选示例

    搜索内容:
    )。这样可以确保整个行根据其内容进行显示或隐藏。

    以下是修正后的jQuery代码,用于实现动态表格筛选:

    $(document).ready(function() {
        // 监听搜索输入框的 keyup 事件
        $("#myInput").on("keyup", function() {
            // 获取输入框的值,并转换为小写,以便进行不区分大小写的搜索
            var value = $(this).val().toLowerCase();
    
            // 筛选表格体 (tbody) 中的每一行 (tr)
            // 注意:这里选择器是 $("#myTable tbody tr"),确保只筛选数据行
            $("#myTable tbody tr").filter(function() {
                // 获取当前行的所有文本内容,并转换为小写
                // 然后检查是否包含搜索值
                var rowText = $(this).text().toLowerCase();
                var isMatch = rowText.indexOf(value) > -1;
    
                // 根据匹配结果显示或隐藏当前行
                $(this).toggle(isMatch);
            });
        });
    });

    代码解释:

    • $(document).ready(function(){...}): 确保在DOM完全加载后再执行jQuery代码,防止出现元素未找到的错误。
    • $("#myInput").on("keyup", function() {...}): 绑定 keyup 事件到ID为 myInput 的搜索框。
    • var value = $(this).val().toLowerCase();: 获取用户输入并将其转换为小写。
    • $("#myTable tbody tr").filter(function() {...}): 这是关键的修正。
      • $("#myTable tbody tr"):这个选择器精确地定位到ID为 myTable 的表格内部的
    S.No Testcase Result: SECTION Reason Analysis
    0CallsiteMemLeakReportInitialFAILEDsection test_caseMem leak found before the runScript issue
    1FinalMemLeakReportFAILEDsection check_final_mem_leaksMemory Leaks FoundScript issue
    2CallsiteMemLeakReportFinalFAILEDsection test_caseMem leak found before the runScript issue
    3InitialMemLeakReportPASSED
    4TriggerInterfaceFlapsPASSED
    5TriggerVlanInterfaceFlapsPASSED
    6TriggerClearIPOspfProcessPASSED
    7TriggerClearIPDTProcessPASSED
    8TriggerClearIPRouteProcessPASSED
    9TriggerClearAuthSessionsPASSED
    10TriggerClearFlowMonitorCacePASSED
    11TriggerBgpNeighborFlapPASSED
    12TriggerVlanInterfaceFlapsPASSED

    注意事项与优化

    1. HTML 结构规范性: 始终使用 和 来组织表格内容。这不仅有助于筛选逻辑的清晰实现,也提高了表格的语义性和可访问性。
    2. 性能考量: 对于包含成千上万行的超大型表格,每次 keyup 事件都遍历所有行可能会导致性能问题。在这种情况下,可以考虑使用节流 (throttle)防抖 (debounce) 技术来限制事件处理函数的执行频率。
    3. 特定列筛选: 如果需要只对表格的某一列进行筛选(例如,只搜索“Testcase”列),可以修改 filter 回调函数内部的逻辑,使其只获取特定 元素的文本内容。例如,要筛选第二列:
      $("#myTable tbody tr").filter(function() {
          // $(this).children('td').eq(1) 获取当前行的第二个元素(索引从0开始)
          var columnText = $(this).children('td').eq(1).text().toLowerCase();
          $(this).toggle(columnText.indexOf(value) > -1);
      });
    4. 无结果提示: 当筛选结果为空时,可以考虑在表格下方显示一条“未找到匹配项”的提示信息,以增强用户体验。
    5. 清空搜索框: 当用户清空搜索框时,所有被隐藏的行应自动重新显示。当前的实现已经能做到这一点,因为空字符串 "" 匹配所有内容。
    6. 总结

      通过本教程,您应该已经掌握了使用 jQuery 为 HTML 表格添加动态筛选功能的核心技术。关键在于理解正确的HTML表格结构、jQuery选择器的精确使用以及 keyup、filter 和 toggle 方法的协同工作。通过灵活运用这些知识,您可以为用户提供更加高效和友好的数据交互体验。记住,始终关注代码的健壮性、性能和用户体验,以构建高质量的Web应用。

    相关专题

    更多
    js获取数组长度的方法
    js获取数组长度的方法

    在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

    557

    2023.06.20

    js刷新当前页面
    js刷新当前页面

    js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

    395

    2023.07.04

    js四舍五入
    js四舍五入

    js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

    756

    2023.07.04

    js删除节点的方法
    js删除节点的方法

    js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

    478

    2023.09.01

    JavaScript转义字符
    JavaScript转义字符

    JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

    494

    2023.09.04

    js生成随机数的方法
    js生成随机数的方法

    js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

    1071

    2023.09.04

    如何启用JavaScript
    如何启用JavaScript

    JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

    659

    2023.09.12

    Js中Symbol类详解
    Js中Symbol类详解

    javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

    554

    2023.09.20

    C++ 高级模板编程与元编程
    C++ 高级模板编程与元编程

    本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

    9

    2026.01.23

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    React 教程
    React 教程

    共58课时 | 4万人学习

    TypeScript 教程
    TypeScript 教程

    共19课时 | 2.4万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号