在我的应用程序中展开3个面板中的所有元素后,Bootstrap Accordion无法正常工作?

时间:2018-06-11 09:43:03

标签: jquery twitter-bootstrap-3

当我点击Expand All时,它会展开所有面板元素,然后通过单击每个面板折叠面板。但是当我想扩展panel1,panel2和panel3时出现问题。如果展开panel2,则应折叠panel1和panel3,依此类推。

$('#Expand').on('click', function() {
  $('#accordion .panel-collapse').collapse('show');
});
#Icon .collapse-toggle:after {
  font-family: 'Glyphicons Halflings';
  content: "\e114";
  float: right;
  color: grey;
}

#Icon .collapse-toggle.collapsed:after {
  content: "\e080";
}
    <a id="Expand" href="#">Expand All</a>
  </span>

  <div class="panel-group" id="accordion">
    <div class="panel panel-default">
      <div class="panel-heading" id="Icon">
        <a class="collapse-toggle collapsed" data-toggle="collapse" data-parent="#accordion" href="#panel1">panel1</a>
      </div>
      <div id="panel1" class="panel-collapse collapse">
        <div class="panel-body"></div>
      </div>
    </div>
    <div class="panel panel-default">
      <div class="panel-heading" id="Icon">
        <a class="collapse-toggle collapsed" data-toggle="collapse" data-parent="#accordion" href="#panel2">panel2 </a>
      </div>
      <div id="panel2" class="panel-collapse collapse">
        <div class="panel-body"></div>
      </div>
    </div>
    <div class="panel panel-default">
      <div class="panel-heading" id="Icon">
        <a class="collapse-toggle collapsed" data-toggle="collapse" data-parent="#accordion" href="#panel3">panel3 </a>
      </div>
      <div id="panel3" class="panel-collapse collapse">
        <div class="panel-body"></div>
      </div>
    </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:0)

您可以使用https://codepen.io/creativedev/pen/mKWWYd

执行此操作
var chk = true;
$('#Expand').click(function() {
    $("#accordion .panel-collapse").each(function(i, v) {
        console.log(i);
        console.log(v);
        if ($(this).hasClass("in")) {
            chk = true;
            $(this).collapse('hide');
        } else {
            chk = false;
            $(this).collapse('show');
        }
    })
});

$('#accordion').on('show.bs.collapse', function() {
    if (chk) {
        $('#accordion .in').collapse('hide');
    }
});