【问题标题】:Getting two Bootstrap Accordions to work within tabs让两个 Bootstrap Accordions 在选项卡中工作
【发布时间】:2015-04-17 15:33:39
【问题描述】:

我在尝试让两个 Bootstrap Accordions 在同一页面上的不同选项卡中工作时遇到问题。

基本上,当我单击第一个手风琴时,所有内容都会按预期折叠和扩展。

然而,当涉及到第二个手风琴时,单击链接没有任何影响,但它确实将我的 css 样式应用于元素。

我的问题是如何获得它,以便两个手风琴都按照手风琴#1 的预期行为折叠和展开?

<div role="tabpanel">

  <!-- Nav tabs -->
  <ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
    <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
    <li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
    <li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li>
  </ul>

  <!-- Tab panes -->
  <div class="tab-content">
    <div role="tabpanel" class="tab-pane active" id="home">
        <!-- ACCORDION NO.1 -->
        <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
            <div class="panel panel-default">
                <div class="panel-heading edu1 active-state" role="tab" id="headingOne">
                    <h4 class="panel-title">
                        <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">HEADING 1</a></h4>
                </div>
                <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
                    <div class="panel-body">
                        ***** SOME TEXT *****
                    </div>
                </div>
            </div>
            <div class="panel panel-default">
                <div class="panel-heading edu1" role="tab" id="headingTwo">
                    <h4 class="panel-title">
                        <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">HEADING 2</a></h4>
                </div>
                <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
                    <div class="panel-body">
                        ***** SOME TEXT *****
                    </div>
                </div>
            </div>
            <div class="panel panel-default">
                <div class="panel-heading edu1" role="tab" id="headingThree">
                    <h4 class="panel-title">
                        <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">HEADING 3</a>
                    </h4>
                </div>
                <div id="collapseThree" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
                    <div class="panel-body">
                        ***** SOME TEXT *****
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div role="tabpanel" class="tab-pane" id="profile">
    ***** SOME OTHER CONTENT *****
    </div>
    <div role="tabpanel" class="tab-pane" id="messages">
        <!-- ACCORDION NO.2 -->
        <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
            <div class="panel panel-default">
                <div class="panel-heading prev-emp activestate" role="tab" id="headingOne">
                    <h4 class="panel-title">
                        <a data-toggle="collapse" data-parent="#accordion-2" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">HEADING 1</a>
                    </h4>
                </div>

                <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
                    <div class="container panel-body">
                        ***** SOME TEXT *****
                    </div>
                </div>
            </div>

            <div class="panel panel-default">
                <div class="panel-heading prev-emp" role="tab" id="headingTwo">
                    <h4 class="panel-title">
                        <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">HEADING 2</a>
                    </h4>
                </div>
                <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
                    <div class="container panel-body">
                        ***** SOME TEXT *****
                    </div>
                </div>
            </div>

            <div class="panel panel-default">
                <div class="panel-heading prev-emp" role="tab" id="headingThree">
                    <h4 class="panel-title">
                        <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">HEADING 3</a>
                    </h4>
                </div>
                <div id="collapseThree" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
                    <div class="container panel-body">
                        ***** SOME TEXT *****
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div role="tabpanel" class="tab-pane" id="settings">
        ***** SOME OTHER CONTENT *****
    </div>
  </div>
</div>

这是我正在使用的 jQuery;

$(function() {
  $('.panel-heading').click(function() {
    if ($(this).hasClass('activestate')) {
      $(this).removeClass('activestate');
    } else {
      $('.panel-heading').removeClass('activestate');
      $(this).addClass('activestate');
    }
 });
});

我已经在标签 1 中使用手风琴 1 和标签 3 中的手风琴 2 复制了我的问题:http://jsfiddle.net/4yk7yzo9/1/

我是 jQuery 的 no0b,所以请好好玩,并提前感谢任何正确方向的指针

【问题讨论】:

  • 我认为它不起作用,例如两个 id 为“collapseOne”、“collapseTwo”等的 div。确保所有元素都有唯一的 id。

标签: javascript jquery css twitter-bootstrap jquery-ui


【解决方案1】:

您只是在为手风琴重复相同的 ID。而且,有些data-parents 混在一起了,Here is your Updated Fiddle

请参阅下面对 2nd 手风琴的一些更改:

    <div class="panel-group" id="accordion-2" role="tablist" aria-multiselectable="true">
        <div class="panel panel-default">
            <div class="panel-heading prev-emp activestate" role="tab" id="headingOne">
                <h4 class="panel-title">
                    <a data-toggle="collapse" data-parent="#accordion-2" href="#collapseFour" aria-expanded="true" aria-controls="collapseFour">HEADING 1</a>
                </h4>
            </div>

            <div id="collapseFour" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
                <div class="container panel-body">
                    ***** SOME TEXT *****
                </div>
            </div>
        </div>

        <div class="panel panel-default">
            <div class="panel-heading prev-emp" role="tab" id="headingTwo">
                <h4 class="panel-title">
                    <a class="collapsed" data-toggle="collapse" data-parent="#accordion-2" href="#collapseFive" aria-expanded="false" aria-controls="collapseFive">HEADING 2</a>
                </h4>
            </div>
            <div id="collapseFive" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
                <div class="container panel-body">
                    ***** SOME TEXT *****
                </div>
            </div>
        </div>

    <!-- Start of Previous Employment Tab #3 -->
        <div class="panel panel-default">
            <div class="panel-heading prev-emp" role="tab" id="headingThree">
                <h4 class="panel-title">
                    <a class="collapsed" data-toggle="collapse" data-parent="#accordion-2" href="#collapseSix" aria-expanded="false" aria-controls="collapseSix">HEADING 3</a>
                </h4>
            </div>
            <div id="collapseSix" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
                <div class="container panel-body">
                    ***** SOME TEXT *****
                </div>
            </div>
        </div>
    </div>

【讨论】:

  • 抱歉回复延迟,所有答案都是正确的,但@M.Doye 排在第一位,所以会接受他的答案,但你们都有相同的解决方案。非常感谢您的帮助,我应该早点注意到这一点
【解决方案2】:

这个重复的 id 是问题

 <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
                        <div class="panel-body">
                            ***** SOME TEXT *****
                        </div>
                    </div>

【讨论】:

    【解决方案3】:

    对于每个标签,您一遍又一遍地使用相同的ID。那就是你的 3 手风琴组都具有相似的 id 属性。

    这是工作小提琴,更新了你的小提琴。 :) https://jsfiddle.net/Lq26j75z/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2013-08-20
      相关资源
      最近更新 更多