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

如何通过JavaScript切换Bootstrap 5的accordion手风琴组件

Bootstrap 5 手风琴accordion自定义JS切换方案(无需jQuery)

Bootstrap 5 官方组件本身提供了原生JavaScript API,不需要依赖jQuery即可直接调用控制组件状态。

你只需要补全toggle函数的逻辑如下:

// 切换1号手风琴项的展开/收起状态
function toggle(event) {
  // 1. 获取你要控制的折叠面板DOM节点
  const collapseEl = document.getElementById('panelsStayOpen-collapseOne')
  // 2. 获取或创建对应面板的Bootstrap Collapse实例
  const collapseInstance = bootstrap.Collapse.getOrCreateInstance(collapseEl, {
    toggle: false // 禁止初始化时自动触发切换动作
  })
  // 3. 调用切换方法,也可替换为.show()直接展开、.hide()直接收起
  collapseInstance.toggle()
}

如果需要控制其他手风琴项,只要替换getElementById参数为对应折叠面板的ID即可。

以下是补全后的完整可运行代码:

<!doctype html>
<html lang="zh-CN">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
  <title>手风琴控制示例</title>
</head>

<body>

<button onclick="toggle(event)">切换1号手风琴项状态</button>

<div class="accordion" id="accordionPanelsStayOpenExample">
  <div class="accordion-item">
    <h2 class="accordion-header" id="panelsStayOpen-headingOne">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="true" aria-controls="panelsStayOpen-collapseOne">
        手风琴项1
      </button>
    </h2>
    <div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse show" aria-labelledby="panelsStayOpen-headingOne">
      <div class="accordion-body">
        <strong>这是第一个手风琴项的内容区域。</strong> 默认处于展开状态,折叠组件会通过添加对应类名来控制元素的展示状态和过渡动画。你可以通过自定义CSS覆盖默认样式调整外观,也可以在<code>.accordion-body</code>容器内插入任意HTML内容,注意过渡动画会限制溢出内容的展示。
      </div>
    </div>
  </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>
<script>
// 切换1号手风琴项的展开/收起状态
function toggle(event) {
  const collapseEl = document.getElementById('panelsStayOpen-collapseOne')
  const collapseInstance = bootstrap.Collapse.getOrCreateInstance(collapseEl, {
    toggle: false
  })
  collapseInstance.toggle()
}
</script>
</body>
</html>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:18:01