模态内的手风琴 - 当点击任何其他可折叠标签时,第一个保持打开状态

时间:2017-01-23 22:00:24

标签: javascript jquery html twitter-bootstrap

当我打开模态时,默认情况下会打开第一个选项卡,如果单击任何其他选项卡,第一个选项卡将关闭,单击的选项卡将打开,但是如果我再次单击第一个选项卡,则两个选项卡都会打开。这是html代码

    <body>
<button id="modalButtton" type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>   
<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 id="modal-title"> </h4>
        </div>
        <div class="modal-body">
          <div class="panel-group" id="accordion">
                        <div class="panel panel-default">
                            <div class="panel-heading">
                                <h4 class="panel-title">
                                <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Course Introduction

                                </a>
                                </h4>
                            </div>

                            <div id="collapseOne" class="panel-collapse collapse in">
                                <div class="panel-body">

                                </div>
                            </div>
                        </div>

                        <div class="panel panel-default">
                            <div class="panel-heading">
                                <h4 class="panel-title">
                                <a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">Description

                                </a>
                                </h4>
                            </div>

                            <div id="collapseTwo" class="panel-collapse collapse">
                                <div class="panel-body">
                                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod</p>
                                </div>
                            </div>
                        </div>

                        <div class="panel panel-default">
                            <div class="panel-heading">
                                <h4 class="panel-title">
                                <a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseThree">Goals

                                </a>
                                </h4>
                            </div>

                            <div id="collapseThree" class="panel-collapse collapse">
                                <div class="panel-body">
                                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod te</p>
                                </div>
                            </div>
                        </div>

                    </div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div> <!-- end of Modal -->

</body>

这是jquery代码

$('#myModal').on('hidden.bs.modal', function () {
$('.collapse').collapse('hide');
});
$('#myModal').on('shown.bs.modal', function () {
$('#collapseOne').collapse('show');
});



$('#accordion').find('.panel-default:has(".in")').addClass('panel-primary');

$('#accordion').on('show.bs.collapse', function (e) {
$(e.target).closest('.panel-default').addClass(' panel-primary');
}).on('hide.bs.collapse', function (e) {
$(e.target).closest('.panel-default').removeClass(' panel-primary');
})

1 个答案:

答案 0 :(得分:0)

您还需要在$('.collapse').collapse('hide');

的函数内调用show.bs.collapse
$('#accordion').on('show.bs.collapse', function(e) {
  $(e.target).closest('.panel-default').addClass(' panel-primary');
  $('.collapse').collapse('hide');
}).on('hide.bs.collapse', function(e) {
  $(e.target).closest('.panel-default').removeClass(' panel-primary');
})

我创造了一个展示这个here的小提琴。

希望这有帮助! :)