讲师中心 微信公众号

工具推荐

视频效率加速
updream

一键生成高质量推广成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

剧云
剧云

中文短剧剧本制作平台

Divi手风琴模块:实现默认展开最后一个项目

雨伟小哥_9382

雨伟小哥_9382

发布时间:2025-11-21 20:27:26

|

318人浏览过

|

来源于php中文网

原创

divi手风琴模块:实现默认展开最后一个项目

本教程详细讲解如何在Divi主题中,通过JavaScript代码实现手风琴(Accordion)模块默认展开其最后一个项目。文章将提供清晰的代码示例,并指导如何将其集成到Divi网站,确保手风琴在页面加载时,仅最后一个项目处于打开状态,提升用户体验和内容展示的灵活性。

Divi主题的手风琴模块是一个非常实用的内容展示工具,但其默认行为通常是所有项目都处于关闭状态,或者第一个项目默认展开。在某些设计场景下,我们可能希望页面加载时,手风琴的最后一个项目能够默认展开,以突出特定信息或引导用户关注结尾内容。本教程将指导您如何通过自定义JavaScript代码实现这一功能。

理解Divi手风琴的结构

在深入代码之前,了解Divi手风琴模块的HTML结构和相关CSS类是至关重要的。一个典型的Divi手风琴模块通常包含以下关键元素:

  • 模块容器: 整个手风琴模块的外部容器,通常具有 et_pb_accordion 类。
  • 手风琴项 (Toggle): 每一个可展开/折叠的项目,通常具有 et_pb_toggle 类。
  • 展开/折叠状态: Divi通过添加或移除 et_pb_toggle_open (展开) 和 et_pb_toggle_close (折叠) 类来控制手风琴项的状态。
  • 标题: 手风琴项的标题部分,通常是 et_pb_toggle_title。
  • 内容: 手风琴项的实际内容,通常是 et_pb_toggle_content,其 display 属性会根据展开/折叠状态进行切换。

我们的目标就是通过JavaScript,在页面加载完成后,精确控制这些类和样式,从而实现最后一个项目的默认展开。

实现思路

由于Divi手风琴的默认行为是由其内置的JavaScript控制的,单纯的CSS :last-child 规则无法直接实现“默认展开”的效果,因为Divi的JS会在页面加载后重新应用其逻辑。因此,我们需要使用JavaScript来干预这一过程。

核心思路如下:

  1. 等待DOM加载完成: 确保在Divi手风琴模块及其内容完全加载到DOM之后再执行脚本。
  2. 定位目标手风琴模块: 为了避免影响页面上所有手风琴模块,我们将为目标模块添加一个自定义CSS类,并通过这个类来精确选择。
  3. 关闭所有手风琴项: 首先遍历目标模块中的所有手风琴项,确保它们都处于关闭状态。这通过移除 et_pb_toggle_open 类并添加 et_pb_toggle_close 类,同时将内容区域的 display 属性设置为 none 来实现。
  4. 打开最后一个手风琴项: 找到目标模块中的最后一个手风琴项,然后移除 et_pb_toggle_close 类并添加 et_pb_toggle_open 类,同时将内容区域的 display 属性设置为 block。

JavaScript解决方案

为了实现上述思路,我们将编写一段jQuery代码。

步骤一:为手风琴模块添加自定义CSS类

首先,在Divi Builder中编辑您希望实现此功能的手风琴模块:

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

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

下载
  1. 点击手风琴模块的齿轮图标进入设置。
  2. 切换到高级选项卡。
  3. 在CSS ID & 类部分,找到CSS类字段。
  4. 输入一个唯一的类名,例如 my-last-open-accordion。

这将允许我们的JavaScript代码精确地定位到这个特定的手风琴模块。

步骤二:编写JavaScript代码

将以下JavaScript代码添加到您的网站。

jQuery(document).ready(function($) {
    // 目标手风琴模块的自定义CSS类。
    // 请确保与您在Divi Builder中设置的类名一致。
    var $targetAccordion = $('.my-last-open-accordion');

    // 检查目标手风琴模块是否存在于页面上
    if ($targetAccordion.length) {
        // 获取该模块内的所有手风琴项
        var $toggles = $targetAccordion.find('.et_pb_toggle');

        // 确保手风琴项存在
        if ($toggles.length > 0) {
            // 1. 遍历所有手风琴项,确保它们都处于关闭状态
            $toggles.each(function() {
                var $toggle = $(this);
                // 如果当前项是打开的,则将其关闭
                if ($toggle.hasClass('et_pb_toggle_open')) {
                    $toggle.removeClass('et_pb_toggle_open').addClass('et_pb_toggle_close');
                    // 直接设置内容区域的display属性为none
                    $toggle.find('.et_pb_toggle_content').css('display', 'none');
                }
            });

            // 2. 找到最后一个手风琴项并将其打开
            var $lastToggle = $toggles.last();
            // 如果最后一个项是关闭的,则将其打开
            if ($lastToggle.hasClass('et_pb_toggle_close')) {
                $lastToggle.removeClass('et_pb_toggle_close').addClass('et_pb_toggle_open');
                // 直接设置内容区域的display属性为block
                $lastToggle.find('.et_pb_toggle_content').css('display', 'block');
            }
        }
    }
});

代码解释:

  • jQuery(document).ready(function($) { ... });: 这是一个标准的jQuery函数,确保在DOM完全加载并准备好之后才执行内部代码,避免因元素未加载而导致的错误。
  • var $targetAccordion = $('.my-last-open-accordion');: 这一行通过我们之前在Divi Builder中添加的自定义CSS类来选择目标手风琴模块。
  • if ($targetAccordion.length) { ... }: 检查是否成功找到了目标模块,以避免在模块不存在时执行不必要的代码。
  • var $toggles = $targetAccordion.find('.et_pb_toggle');: 在目标模块内部查找所有具有 et_pb_toggle 类的元素,这些就是单个的手风琴项。
  • $toggles.each(function() { ... });: 遍历所有找到的手风琴项。
    • if ($toggle.hasClass('et_pb_toggle_open')) { ... }: 检查当前手风琴项是否已经处于打开状态。
    • $toggle.removeClass('et_pb_toggle_open').addClass('et_pb_toggle_close');: 移除打开状态的类,添加关闭状态的类。
    • $toggle.find('.et_pb_toggle_content').css('display', 'none');: 将手风琴项的内容区域隐藏。
  • var $lastToggle = $toggles.last();: 选取 et_pb_toggle 集合中的最后一个元素。
  • if ($lastToggle.hasClass('et_pb_toggle_close')) { ... }: 检查最后一个手风琴项是否处于关闭状态。
  • $lastToggle.removeClass('et_pb_toggle_close').addClass('et_pb_toggle_open');: 移除关闭状态的类,添加打开状态的类。
  • $lastToggle.find('.et_pb_toggle_content').css('display', 'block');: 将最后一个手风琴项的内容区域显示出来。

代码集成方式

您可以选择以下任意一种方式将上述JavaScript代码添加到您的Divi网站:

  1. Divi主题选项 -> 集成:

    • 登录WordPress后台,导航到 Divi -> 主题选项。
    • 点击 集成 选项卡。
    • 将代码粘贴到 在 中添加代码 区域。
    • 点击 保存更改。
  2. 使用Divi代码模块 (仅适用于特定页面):

    • 在您使用手风琴模块的页面上,通过Divi Builder添加一个 代码模块。
    • 将JavaScript代码(包括 <script> 标签)粘贴到代码模块中。</script>
    • 这种方法适用于仅在特定页面实现此功能。
  3. 子主题的 functions.php (推荐):

    • 如果您正在使用Divi子主题,这是最专业和推荐的方式。
    • 编辑子主题的 functions.php 文件。
    • 将以下代码添加到 functions.php 文件中:
    <?php
    function custom_divi_accordion_last_open_script() {
        // 确保只在前端页面加载此脚本
        if ( ! is_admin() ) {
            wp_add_inline_script( 'divi-custom-script', '
                jQuery(document).ready(function($) {
                    var $targetAccordion = $(".my-last-open-accordion");
    
                    if ($targetAccordion.length) {
                        var $toggles = $targetAccordion.find(".et_pb_toggle");
    
                        if ($toggles.length > 0) {
                            $toggles.each(function() {
                                var $toggle = $(this);
                                if ($toggle.hasClass("et_pb_toggle_open")) {
                                    $toggle.removeClass("et_pb_toggle_open").addClass("et_pb_toggle_close");
                                    $toggle.find(".et_pb_toggle_content").css("display", "none");
                                }
                            });
    
                            var $lastToggle = $toggles.last();
                            if ($lastToggle.hasClass("et_pb_toggle_close")) {
                                $lastToggle.removeClass("et_pb_toggle_close").addClass("et_pb_toggle_open");
                                $lastToggle.find(".et_pb_toggle_content").css("display", "block");
                            }
                        }
                    }
                });
            ', 'after' );
        }
    }
    add_action( 'wp_enqueue_scripts', 'custom_divi_accordion_last_open_script' );
    • 注意: divi-custom-script 是一个示例的脚本句柄,您可以根据需要调整。wp_add_inline_script 会将您的JavaScript代码作为内联脚本添加到页面。

注意事项

  • jQuery依赖: Divi主题默认加载jQuery,所以您可以直接使用 jQuery 或其别名 $ (在 ready 函数内部)。
  • 选择器精确性: 务必使用自定义CSS类来定位特定的手风琴模块,避免影响到页面上其他手风琴模块的默认行为。
  • 缓存问题: 在添加或修改代码后,请务必清除您的网站缓存(包括主题缓存、插件缓存和浏览器缓存),以确保更改生效。
  • Divi版本更新: Divi主题的更新可能会改变其内部HTML结构或JavaScript行为。如果未来代码失效,请检查Divi的更新日志并相应调整代码。
  • 动画效果: 本教程中的代码直接设置 display 属性,没有包含展开/折叠的动画效果。Divi默认的动画是通过jQuery的 slideUp() / slideDown() 实现的。如果您需要动画,可以将 css('display', 'none') 替换为 slideUp(),将 css('display', 'block') 替换为 slideDown()。但请注意,这可能会与Divi自身的JS动画产生冲突,需要谨慎测试。

总结

通过上述JavaScript代码和集成方法,您可以轻松地实现Divi手风琴模块默认展开最后一个项目的功能。这不仅提升了网站内容的展示灵活性,也为用户提供了更加定制化的浏览体验。请务必遵循教程中的步骤,并根据您的具体需求进行调整和测试。

热门AI工具

更多
DeepSeek

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

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

VibeKnow
VibeKnow Hot

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

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

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

WorkBuddy

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

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的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中文网欢迎大家前来学习。

2342

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

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

80

2026.11.06

热门下载

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

精品课程

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

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