You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Divi WordPress自定义Toggle默认加载展开实现方法咨询

如何让自定义Divi Toggle默认处于展开状态?

我来帮你搞定这个问题!你之前只修改CSS却没生效,是因为只调整了内容的显示状态,但JS里的触发元素初始状态没同步,导致逻辑和样式不匹配。需要同时修改CSS默认显示规则JS初始状态设置,具体步骤如下:

1. 调整CSS默认显示

把原来默认隐藏内容的CSS规则,改成默认显示:

<style>
.et-show-more-content { display:block; } /* 从none改为block,让内容默认展开 */
.et-fb .et-show-more-content { display:block; }
.et-show-more-toggle0 { cursor:pointer; }
</style>

2. 同步JS初始状态

页面加载时,要给触发文本设置好「展开状态」对应的样式和类名,确保和内容的显示状态匹配。修改后的JS代码如下:

<script>
(function($) {
  $(document).ready(function() {
    // 初始化默认展开状态:设置触发元素的样式和active类
    const $toggleElement = $('.et-show-more-toggle0');
    $toggleElement.addClass('et-show-more-toggle0_active');
    $toggleElement.text('vorwort');
    $toggleElement.css('text-align','left');
    $toggleElement.css('color', '#4d4b40');

    // 保留原有的点击切换逻辑
    $toggleElement.on('click', function(e) {
      $(e.target).closest('.et-show-more-container').children('.et-show-more-content').slideToggle("300");
      $(this).toggleClass('et-show-more-toggle0_active');
      
      if ($(this).hasClass('et-show-more-toggle0_active')) {
        $(this).text('vorwort');
        $(this).css('text-align','left');
        $(this).css('color', '#4d4b40');
      } else {
        $(this).text('vorwort');
        $(this).css('text-align','left');
        $(this).css('color', '#dc1250');
      }
    });
  });
})(jQuery);
</script>

为什么之前的方法没用?

你只删除或修改CSS的话,内容确实会显示,但触发文本的样式(颜色、active类)还是默认的「未展开」状态,点击时的逻辑会出现混乱。现在同时调整CSS和JS的初始状态,就能保证页面加载时内容展开、触发元素样式匹配,点击后也能正常切换状态。

内容的提问来源于stack exchange,提问作者user16059704

火山引擎 最新活动