仅显示一个折叠打开 (Vue 3 / Bootstrap 5)

Only show one collapse open (Vue 3 / Bootstrap 5)

我正在与 Bootstrap5Vue 3 合作。我有多个 buttons,每个都触发一个 collapse

我想要的是,如果我打开一个折叠,所有其他折叠都应该关闭。但是现在每一个崩溃都会显示,其他的不会关闭。

我试过使用 data-parentdata-bs-parent,但这些都不行。

我怎样才能做到这一点?谢谢!

<div class="row margin-top">
  <div class="col">
    <div class="d-grid gap-2">
      <button type="button" class="btn color-success" style="height: 200px;" data-bs-toggle="collapse" data-bs-target="#collapse-b1" aria-expanded="false" aria-controls="collapse-b1" data-bs-parent="#myGroup">
        Button 1
      </button>
    </div>
  </div>

  <div class="col">
    <div class="d-grid gap-2">
      <button type="button" class="btn color-primary" style="height: 200px;" data-bs-toggle="collapse" data-bs-target="#collapse-b2" aria-expanded="false" aria-controls="collapse-b2" data-bs-parent="#myGroup">
        Button 2
      </button>
    </div>
  </div>
</div>

<div>
  <div class="collapse" id="collapse-b1">
    <div class="mt-3">
      Text 1
    </div>
  </div>

  <div class="collapse" id="collapse-b2">
    <div class="mt-3">
      Text 2
    </div>
  </div>
</div>

一些小改动以使其正常工作

您的代码需要一些小的修正才能正常工作。将 data-bs-parent="#myGroup" 属性添加到每个折叠。然后将相同的id分配给可折叠元素的父元素,即容器。

请注意,属性名称已从 Bootstrap 4 中的 data-parent 更改为 Bootstrap 5 中的 data-bs-parent。父元素是包含可折叠元素的元素并且 NOT 用于切换的按钮和链接的容器。

此外,按钮需要应用正确的 类,例如 btn-primarybtn-success

相关 SO 问题:Collapse other sections when one is expanded

运行 查看其工作原理的代码段:

<div class="row margin-top">
  <div class="col">
    <div class="d-grid gap-2">
      <button type="button" class="btn btn-success" style="height: auto;" data-bs-toggle="collapse" data-bs-target="#collapse-b1" aria-expanded="false" aria-controls="collapse-b1">
        Button 1
      </button>
    </div>
  </div>

  <div class="col">
    <div class="d-grid gap-2">
      <button type="button" class="btn btn-primary" style="height: auto;" data-bs-toggle="collapse" data-bs-target="#collapse-b2" aria-expanded="false" aria-controls="collapse-b2">
        Button 2
      </button>
    </div>
  </div>

</div>

<div id="myGroup">  <!-- Add the parent id here -->

  <div class="collapse" id="collapse-b1"  data-bs-parent="#myGroup">
    <div class="alert alert-success mt-3">
      Text 1
    </div>
  </div>

  <div class="collapse" id="collapse-b2" data-bs-parent="#myGroup">
    <div class="alert alert-primary mt-3">
      Text 2
    </div>
  </div>
  
</div>


<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet">

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js"></script>