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

Bootstrap 5如何实现按钮点击互斥切换显隐对应内容?

Bootstrap 5 实现折叠内容互斥显隐

直接利用Collapse组件原生的分组互斥能力即可实现需求,不需要编写自定义JavaScript逻辑,组件会自动处理「展开当前内容前先隐藏同组其他已展开内容」的交互顺序。

核心修改点

  • 给两个需要互斥的折叠内容块添加同一个父容器
  • 给每个折叠内容块添加data-bs-parent属性,属性值指向共同父容器的选择器,Bootstrap会自动将同属一个父容器的折叠内容设为互斥模式
  • 修正原代码中写错的aria-controls无障碍属性值,让按钮和对应控制的内容id匹配

完整可运行代码

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

<p>
  <button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapse1" aria-expanded="false" aria-controls="collapse1">
    Button 1
  </button>
  
  <button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapse2" aria-expanded="false" aria-controls="collapse2">
    Button 2
  </button>
</p>

<!-- 互斥折叠组的共同父容器 -->
<div id="collapseGroup">
  <div class="collapse" id="collapse1" data-bs-parent="#collapseGroup">
    Button 1 content
  </div>

  <div class="collapse" id="collapse2" data-bs-parent="#collapseGroup">
    Button 2 content
  </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>

效果说明

  • 点击按钮1时会展开按钮1对应内容,若当前按钮2内容为展开状态,会先执行按钮2内容的隐藏动画,再展示按钮1内容,反向操作逻辑一致
  • 点击已展开内容对应的按钮时,会正常折叠当前内容,不会强制展开其他内容
  • 所有动画时序、aria-expanded等无障碍状态都由Bootstrap自动维护,不需要额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:33:41