You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置手风琴组件指定面板默认打开且支持多面板同时展开

解决方案

1. jQuery UI 相关说明

jQuery UI 的 accordion 组件本身的设计定位就是同一时间仅允许展开一个面板,没有支持多开的配置项,你没有遗漏文档,要实现多开需求用你自己的原生实现更合适。

2. 原生实现的修改方案

你的思路是完全正确的,不需要推翻现有逻辑,只需要做很小的改动即可:

  • 第一步:在HTML中给需要默认展开的面板标题元素添加自定义标记类,比如default-active
  • 第二步:在原有的JS绑定事件逻辑后,新增初始化逻辑,对带标记类的标题执行打开操作即可,和你现有点击逻辑完全一致,不存在反向操作的问题。

示例代码

HTML 改动示例
<!-- 需要默认展开的面板标题加上default-active类 -->
<div class="ols-accordion default-active">默认展开的面板标题</div>
<div class="olsPanel">这里是默认展开的面板内容</div>

<div class="ols-accordion">普通面板标题</div>
<div class="olsPanel">这里是普通面板内容</div>
修改后的JS代码
var acc = document.getElementsByClassName("ols-accordion");
var i;
for (i = 0; i < acc.length; i++) {
    acc[i].addEventListener("click", function () {
        this.classList.toggle("active");
        var olsPanel = this.nextElementSibling;
        if (olsPanel.style.maxHeight) {
            olsPanel.style.maxHeight = null;
        } else {
            olsPanel.style.maxHeight = olsPanel.scrollHeight + "px";
        }
    });
    // 新增初始化逻辑:如果有default-active类,自动触发点击打开
    if(acc[i].classList.contains('default-active')) {
        acc[i].click();
    }
}

其他说明

如果需要同时默认展开多个面板,只需要给多个标题元素都加上default-active类即可,符合你要支持多开的需求。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 09:54:08