bootstrap-4 - Bootstrap 4 折叠 Accordion - 始终打开一个面板

标签 bootstrap-4 bootstrap-accordion

我在 Accordion 中使用 Bootstrap 4.0 的折叠组件,类似于他们在 docs 上的组件。 .

<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>
  <div class="card">
    <div class="card-header" id="headingThree">
      <h5 class="mb-0">
        <button class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
          Collapsible Group Item #3
        </button>
      </h5>
    </div>
    <div id="collapseThree" class="collapse" aria-labelledby="headingThree" 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>

所以项目#1 默认展开。然后当您单击项目 #3 时,#1 关闭,#3 展开……完美!

但是,默认操作是,如果展开 Item #3 并单击该标题,则面板将关闭,您只剩下一个标题列表。我想更进一步,如果我们关闭第 3 项,第 1 项将展开,因此如果没有进行其他选择,它将是“默认”面板将打开。

我见过一个 solution对于 Bootstrap3,其中一个面板始终打开,但我希望能够将特定面板(项目 #1)作为作为备份打开的面板。这是便于引用的脚本:
$('.panel-heading a').on('click',function(e){
    if($(this).parents('.panel').children('.panel-collapse').hasClass('in')){
        e.stopPropagation();
    }
    // You can also add preventDefault to remove the anchor behavior that makes
    // the page jump
    // e.preventDefault();
});

最佳答案

您可以使用折叠隐藏事件。在这种情况下,使用 .eq(0) 因为 0 是第一个可折叠 div 的索引。

$('.collapse').on('hidden.bs.collapse', function () {
    $('.collapse').eq(0).collapse('show');
})

为了更进一步,您可以将一个新的 default 数据变量添加到父级 #accordion...
<div id="accordion" class="accordion" data-default="1">..</div>
然后更改 jQuery 以使用该变量..
/* default accordion variable method */
$('.collapse').on('hidden.bs.collapse', function () {
  var defaultDiv = $($(this).data("parent")).data("default");
  $('.collapse').eq(defaultDiv-1).collapse('show');
})

演示: https://www.codeply.com/go/NilPIQD9oi

另一种选择是防止任何打开的 Accordion 自行关闭,如 I explained in this answer

关于bootstrap-4 - Bootstrap 4 折叠 Accordion - 始终打开一个面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488688/

相关文章:

javascript - 选项卡内的 Bootstrap Accordion

jquery - Bootstrap Accordion ,单击时滚动到事件 Accordion 的顶部,我将如何在嵌套 Accordion 上实现?

html - 如何在 Angular4 中的两行产品之间留出空间

twitter-bootstrap - 导航菜单不适用于使用 Bootstrap 的 vue.js

asp.net-core - Bootstrap Accordion 3.3.7 在 foreach 循环内崩溃 asp.net core 1.1 无法正常工作

javascript - 如何使用按钮 Bootstrap Accordion 更改 (-,+) 符号?

angularjs - AngularJS 中 Bootstrap Accordion 内的数据表

css - Bootstrap 网格的前两行之间没有空格

jquery - bootstrap 4 文件输入不显示文件名

html - Bootstrap html使文本区域跨越表单中的多行