讲师中心 微信公众号

工具推荐

视频效率加速
updream

一键生成高质量推广成片

剧云
剧云

中文短剧剧本制作平台

Laper
Laper

剧本策划到成片协作

AniShort
AniShort

AI短剧协同制作平台

使用jQuery实现动态表格行的折叠与展开功能

千瑶吖_5153

千瑶吖_5153

发布时间:2025-09-13 09:46:01

|

264人浏览过

|

来源于php中文网

原创

使用jQuery实现动态表格行的折叠与展开功能

本教程旨在解决动态生成表格中,如何高效地实现表格行(超出指定数量的部分)的默认隐藏与通过单个按钮进行“显示更多”和“显示更少”的切换。我们将通过jQuery的强大选择器和简洁的JavaScript逻辑,优化传统硬编码方案,提供一个可扩展且易于维护的客户端解决方案。

1. 问题背景与传统方法的局限性

在web开发中,尤其是在wordpress这类内容管理系统中,经常需要展示动态生成的数据表格。一个常见的需求是,当表格行数较多时,默认只显示前几行,其余行则隐藏,并通过一个按钮来切换显示全部或恢复默认状态。

原始的实现方式通常涉及以下问题:

  • 硬编码行ID: 通过document.getElementById('ID')来逐个控制每一行的显示与隐藏。这导致代码冗长、难以维护,尤其当表格行数不确定或非常多时,需要手动添加或删除大量代码。
  • 多个控制按钮: 为“显示全部”和“显示更少”分别设置一个按钮,增加了用户操作的复杂性,且不符合单一按钮切换状态的常见交互模式。
  • 可扩展性差: 当表格结构或行数发生变化时,需要修改大量的JavaScript代码,降低了开发效率。

2. 引入jQuery优化方案

为了克服上述局限性,我们可以利用jQuery库提供的强大DOM操作能力和选择器,实现一个更优雅、更具可扩展性的解决方案。jQuery能够让我们以更简洁的方式选中多个元素并批量操作它们的样式。

先决条件: 确保你的页面已经引入了jQuery库。如果尚未引入,可以在

标签或结束标签前添加以下CDN链接:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

3. HTML结构调整

首先,我们需要对表格的HTML结构进行微调,主要是将两个按钮合并为一个,并添加一个统一的类或ID以便于JavaScript操作。

<table width="100%" cellspacing="10" cellpadding="10" class="tablec">
    <thead>
    <tr>
        <th><strong>Floor Plan</strong></th>
        <th><strong>Dimension</strong></th>
        <th><strong>Price</strong></th>
    </tr>
    </thead>
    <tbody>
    <?php
    // PHP代码用于动态生成表格行
    $i = 0; // 初始化行计数器
    foreach( $floor_plans as $plans ) {
        $i++;
        // 假设这里是生成表格行的逻辑,为每行添加一个class以便于选择
        // 注意:为简化示例,这里移除了原PHP代码中的复杂逻辑,仅保留结构
        ?>
        <tr class="dynamic-row">
            <td><?php echo $plans['fave_plan_title']; ?></td>
            <td><?php echo $plans['fave_plan_description']; ?></td>
            <td><button class="btn btn-primary">Get Quote</button></td>
        </tr>
    <?php } ?>
    </tbody>
</table>
<br>
<div class="wrapperr">
    <!-- 合并为一个按钮,并添加一个class用于JS操作 -->
    <button class="btn btn-primary toggle-rows-btn">显示更多 <i class="fa fa-arrow-down" style="font-size:14px"></i></button>
</div>

关键点:

  • 我们为所有动态生成的行添加了一个通用类名,例如dynamic-row。这在某些场景下比依赖ID更灵活,因为ID必须是唯一的。
  • 将原有的“Show All”和“Show Less”按钮合并为一个,并赋予它一个类名toggle-rows-btn。
  • 4. JavaScript(jQuery)实现逻辑

    接下来是核心的JavaScript代码,它将处理行的初始隐藏、按钮的点击事件以及文本的切换。

    DeepBI DHTML 页面生成器
    DeepBI DHTML 页面生成器

    生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur

    下载
    <script>
        // 文档加载完成后执行
        jQuery(document).ready(function($) {
            var defaultVisibleRows = 3; // 默认显示的前3行
            var $rows = $(".tablec tbody tr.dynamic-row"); // 获取所有动态行
            var $toggleButton = $(".toggle-rows-btn"); // 获取切换按钮
            var shownAll = false; // 标记当前是否显示了所有行
    
            // 1. 页面加载时默认隐藏超出部分的行
            // 使用:gt()选择器选中索引大于等于defaultVisibleRows的行 (索引从0开始)
            $rows.filter(":gt(" + (defaultVisibleRows - 1) + ")").hide();
    
            // 如果总行数不大于默认显示行数,则隐藏按钮
            if ($rows.length <= defaultVisibleRows) {
                $toggleButton.hide();
            }
    
            // 2. 绑定按钮点击事件
            $toggleButton.on('click', function() {
                if (shownAll) {
                    // 当前是显示所有状态,点击后应该隐藏多余行
                    $rows.filter(":gt(" + (defaultVisibleRows - 1) + ")").hide();
                    $(this).html('显示更多 <i class="fa fa-arrow-down" style="font-size:14px"></i>');
                } else {
                    // 当前是隐藏状态,点击后应该显示所有行
                    $rows.show();
                    $(this).html('显示更少 <i class="fa fa-arrow-up" style="font-size:14px"></i>');
                }
                shownAll = !shownAll; // 切换状态
            });
        });
    </script>

    代码详解:

    • jQuery(document).ready(function($) { ... });: 确保在DOM完全加载后执行脚本,避免因元素未加载而导致的错误。$是jQuery的别名。
    • var defaultVisibleRows = 3;: 定义一个变量来控制默认显示的行数,方便修改。
    • var $rows = $(".tablec tbody tr.dynamic-row");: 使用jQuery选择器获取所有具有dynamic-row类的表格行。将结果存储在以$开头的变量中是jQuery编程的常见约定,表示这是一个jQuery对象。
    • var $toggleButton = $(".toggle-rows-btn");: 获取我们的切换按钮。
    • var shownAll = false;: 一个布尔变量,用于跟踪当前表格是处于“显示所有”状态还是“默认隐藏”状态。初始值为false,表示默认只显示部分行。
    • $rows.filter(":gt(" + (defaultVisibleRows - 1) + ")").hide();: 这是初始隐藏的关键。
      • $rows.filter(...):在已选中的行中进一步筛选。
      • :gt(index):jQuery的选择器,用于选择索引大于给定值的元素。由于DOM元素的索引是从0开始的,如果我们要显示前3行(索引0, 1, 2),那么需要隐藏索引大于2(即defaultVisibleRows - 1)的行。
      • .hide():jQuery方法,用于隐藏选中的元素。
    • if ($rows.length : 这是一个健壮性检查。如果表格的总行数本身就不超过默认显示行数,那么切换按钮就没有存在的意义,直接将其隐藏。
    • $toggleButton.on('click', function() { ... });: 为切换按钮绑定点击事件。
    • if (shownAll) { ... } else { ... }: 根据shownAll的状态执行不同的逻辑。
      • 如果shownAll为true(当前显示所有行),点击后执行隐藏多余行的操作,并将按钮文本改为“显示更多”。
      • 如果shownAll为false(当前只显示部分行),点击后执行显示所有行的操作,并将按钮文本改为“显示更少”。
    • $(this).html(...): $(this)在事件处理函数中指向触发事件的元素(即按钮本身)。.html()方法用于设置元素的HTML内容,这里用来更新按钮的文本和图标。
    • shownAll = !shownAll;: 每次点击后,反转shownAll的状态,以便下次点击时执行相反的操作。

    5. 优势与注意事项

    优势:

    • 代码简洁高效: 利用jQuery选择器,一行代码即可选中并操作多个元素,避免了大量的getElementById调用。
    • 可扩展性强: 无论表格有多少行,此代码都能正常工作,无需根据行数修改JavaScript。只需调整defaultVisibleRows变量即可改变默认显示行数。
    • 维护性高: 逻辑清晰,易于理解和修改。
    • 用户体验优化: 单一按钮切换状态,符合直观的用户交互习惯。

    注意事项:

    • jQuery依赖: 确保页面已正确引入jQuery库。
    • CSS冲突: 如果页面有其他CSS规则影响display属性,可能会与.hide()和.show()产生冲突。通常情况下,jQuery的hide()和show()会直接操作元素的display样式。
    • 无障碍性(Accessibility): 对于需要更高无障碍性支持的场景,可以考虑添加ARIA属性(如aria-expanded)来指示折叠状态,以便屏幕阅读器等辅助技术更好地理解。
    • 性能考量: 对于非常庞大(数千行以上)的表格,即使是jQuery批量操作也可能引起轻微的性能延迟。但对于一般用途的动态表格,这种方法效率足够高。
    • CSS替代方案: 另一种实现隐藏/显示的方法是切换CSS类,例如hidden-row { display: none; },然后通过JS添加/移除这个类。这可以更好地分离样式和行为,但jQuery的hide()/show()在许多情况下已经足够方便。

    6. 总结

    通过本教程,我们学习了如何利用jQuery的强大功能,以一种高效、可扩展且用户友好的方式实现动态表格行的折叠与展开功能。这种方法不仅解决了传统硬编码方案的痛点,也为处理类似前端交互需求提供了宝贵的实践经验。在实际项目中,灵活运用jQuery选择器和事件处理机制,将大大提升开发效率和代码质量。

热门AI工具

更多
花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

621

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1256

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2362

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

2168

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

513

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

337

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

906

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

309

2026.01.13

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

0

2026.11.12

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn