Bootstrap 3折叠 - 添加活动类以打开面板

cha*_*dan 16 html javascript css jquery twitter-bootstrap

首先这里是小提琴:http://jsfiddle.net/krish7878/h38jn324/

单击面板时的简单问题(并且展开以显示其各自的内容),需要将"活动"类添加到"面板标题".

我发现了类似的问题,但这些解决方案似乎都没有用(奇怪的是).任何帮助,将不胜感激.

HTML代码:

<div class="accordion-2 panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
                    Our Mission
                </a>
            </h4>
        </div><!-- /.panel-heading -->
        <div id="collapseOne" class="panel-collapse collapse in">
            <div class="panel-body">
                <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.</p>
            </div>
        </div><!-- /#collapseOne -->
    </div><!-- /.panel -->
<div class="panel panel-default">
    <div class="panel-heading">
        <h4 class="panel-title">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
                Success Stories
            </a>
        </h4>
    </div><!-- /.panel-heading -->
    <div id="collapseTwo" class="panel-collapse collapse">
        <div class="panel-body">
            <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.</p>
        </div><!-- /.panel-body -->
    </div><!-- /#collapseTwo -->
</div><!-- /.panel -->
<div class="panel panel-default last">
    <div class="panel-heading">
        <h4 class="panel-title">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">
                Our Story
            </a>
        </h4>
    </div><!-- /.panel-heading -->
    <div id="collapseThree" class="panel-collapse collapse">
        <div class="panel-body">
            <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.</p>
        </div><!-- /.panel-body -->
    </div><!-- /#collapseTwo -->
</div><!-- /.panel -->
Run Code Online (Sandbox Code Playgroud)

JS代码:

jQuery('.accordion-2 .panel-heading a[data-toggle="collapse"]').on('click', function () {   
jQuery('.accordion-2 .panel-heading a[data-toggle="collapse"]').removeClass('actives');
$(this).addClass('actives');
Run Code Online (Sandbox Code Playgroud)

});

Mos*_*taf 16

试试这个:

$('.panel-heading a').click(function() {
    $('.panel-heading').removeClass('active');
    if(!$(this).closest('.panel').find('.panel-collapse').hasClass('in'))
        $(this).parents('.panel-heading').addClass('active');
});
Run Code Online (Sandbox Code Playgroud)

检查JSFiddle演示

更新1: 要在第一次加载时将面板设置为活动,只需将该active类手动添加到panel-headingHTML代码中.

更新2: 虽然这个答案被标记为已接受答案,但我强烈建议您也Blizwire回答一下.


Mar*_*tin 14

目前的答案(由Moshtaf提供)是使用标准点击事件.但是,正如Jurriaan所指出的,Bootstrap有一个用于打开/关闭可折叠物品的内置事件,使用起来更安全(单击链接并不一定意味着显示了面板).这是一个干净的解决方案,受Jurriaan解决方案的启发,只需极少量的代码和jQuery选择器.http://codepen.io/martinkrulltott/pen/mPgYgQ

$(document).ready(function() {
  $('.panel-collapse').on('show.bs.collapse', function () {
    $(this).siblings('.panel-heading').addClass('active');
  });

  $('.panel-collapse').on('hide.bs.collapse', function () {
    $(this).siblings('.panel-heading').removeClass('active');
  });
});
Run Code Online (Sandbox Code Playgroud)


Jur*_*ofs 5

在某些情况下,这些答案对我不起作用:在1页上有多个面板组,或者单击相同的标题以隐藏面板.来自/sf/answers/1682363301/的这种改编作为一般解决方案,我添加了用于在活动状态下设置默认打开面板的代码.

$('.panel-group .panel-collapse.in').prev().addClass('active');
$('.panel-group')
  .on('show.bs.collapse', function(e) {
    $(e.target).prev('.panel-heading').addClass('active');
  })
  .on('hide.bs.collapse', function(e) {
    $(e.target).prev('.panel-heading').removeClass('active');
  });
Run Code Online (Sandbox Code Playgroud)


Sye*_*yed 5

对于正在寻找CSS解决方案的人,我只在Bootstrap 4中厌倦了这个:

HTML

<a class="collapsed" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample"> Open Collapse </a>

<div class="collapse" id="collapseExample">
  <div class="card card-block card-outline-primary">
    <h3 class="text-center">Date Goes Here</h3>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

[data-toggle="collapse"]:not(.collapsed) {
  background-color: blue;
}
Run Code Online (Sandbox Code Playgroud)