0

0

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

DDD

DDD

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

|

298人浏览过

|

来源于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中编辑您希望实现此功能的手风琴模块:

viable
viable

基于GPT-4的AI非结构化数据分析平台

下载
  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主题选项 -youjiankuohaophpcn 集成:

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

    • 在您使用手风琴模块的页面上,通过Divi Builder添加一个 代码模块
    • 将JavaScript代码(包括 <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

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

156

2023.09.12

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

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

335

2023.10.13

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

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

406

2023.11.10

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

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

515

2023.12.04

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

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

312

2023.12.06

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

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

128

2024.02.23

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

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

183

2024.02.23

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

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

51

2026.01.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

36

2026.03.12

热门下载

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

精品课程

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

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.6万人学习

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

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