Bootstrap手风琴Javascript在另一张卡关闭时打开一张卡

Posted

技术标签:

【中文标题】Bootstrap手风琴Javascript在另一张卡关闭时打开一张卡【英文标题】:Bootstrap accordion Javascript to open one card when the other closes 【发布时间】:2021-07-25 01:37:35 【问题描述】:

我有一个标准的 Bootstrap 手风琴,我不想让所有卡片同时关闭,我总共有两张。

现在...如果我点击一个,它会打开,如果我再次点击它,它会关闭。第一张卡开始打开,如果我关闭第一张卡,我希望它自动打开第二张卡,反之亦然。这样一来,您将始终处于打开状态。

这是我的代码,感谢您的帮助。

    <div id="accordion">
       <div class="card">
          <div class="card-header" id="headingOne">
             <h5 class="mb-0">
               <button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" 
                       aria-expanded="true" aria-controls="collapseOne">
               Collapsible Group Item #1
               </button>
            </h5>
         </div>

    <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
      <div class="card-body">
        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
      </div>
    </div>
  </div>
  <div class="card">
    <div class="card-header" id="headingTwo">
      <h5 class="mb-0">
        <button class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
          Collapsible Group Item #2
        </button>
      </h5>
    </div>
    <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
      <div class="card-body">
        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
      </div>
    </div>
  </div>
    I was trying to do something like this...
    <script>
            $(document).ready(function () 
              $('#collapseOne').on('hide.bs.collapse', function() 
                $('#collapseTwo').collapse('show')
                ); 
            );
    </script>

【问题讨论】:

【参考方案1】:

您可以在 button-link 上添加 click 事件。因此,每当单击您的按钮时,检查它是否具有 collapsed 类,这取决于此获取另一个按钮的 data-target 并使用 collapse('show') 显示该 div。

演示代码

$(".btn-link").on("click", function() 
  //check if the button not have class collapsed
  if (!$(this).hasClass("collapsed")) 
    //get another button data-target and show that(use .first() if needed has more then 2 button)
    console.log($(".btn-link").not(this).data('target'))
    $($(".btn-link").not(this).data('target')).collapse('show')
  
)
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div id="accordion">
  <div class="card">
    <div class="card-header" id="headingOne">
      <h5 class="mb-0">
        <button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
               Collapsible Group Item #1
               </button>
      </h5>
    </div>

    <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
      <div class="card-body">
        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird
      </div>
    </div>
  </div>
  <div class="card">
    <div class="card-header" id="headingTwo">
      <h5 class="mb-0">
        <button class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
          Collapsible Group Item #2
        </button>
      </h5>
    </div>
    <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
      <div class="card-body">
        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird
        u probably haven't heard of them accusamus labore sustainable VHS.
      </div>
    </div>
  </div>

【讨论】:

Weird.. 我看到它在 sn-p 中工作,但我无法让它在我的 Django 模板中工作。我已经安装了所有的链接和脚本,代码完全一样。 控制台内有任何错误吗?另外,console.log($(".btn-link").not(this).data('target')) 看看它是否给你正确的 id。 bash:意外标记 `$(".btn-link").not' 附近的语法错误 您在代码本身或console.log($(".btn-link").not(this).data('target')) 的哪一行收到了该错误? console.log($(".btn-link").not(this).data('target'))

以上是关于Bootstrap手风琴Javascript在另一张卡关闭时打开一张卡的主要内容,如果未能解决你的问题,请参考以下文章

带有 Bootstrap 折叠插件的 Javascript 切换

将 Bootstrap Accordion 设置为关闭并在单击时展开选项卡

bootstrap实现手风琴功能(树形列表)

Bootstrap 4:如何创建一个带有手风琴的下拉菜单?

Bootstrap手风琴,点击时滚动到活动(打开)手风琴的顶部?

Bootstrap 4:手风琴不会折叠卡片