【问题标题】:Bootstrap accordion is not collapsingBootstrap 手风琴没有崩溃
【发布时间】:2018-01-21 17:23:47
【问题描述】:

我是 Bootstrap 的新手。我有一个手风琴元素几乎可以完美地工作,除了一个问题。当我选择一个新面板时,它会正确打开,但不会自动关闭最后打开的面板。事实上,我可以同时打开所有三个。我在 Stack Overflow 上发现了这个问题,但在所有情况下,问题都与未将 data-parent 属性设置为包装器 div id (或者,省略了 data-parent 名称前面的 # )有关。但这不是我的问题。我正在使用 Bootstrap 4。我已经使用最新的 Bootstrap CDN 和 Jquery 链接在 Fiddle 中测试了我的手风琴。那里有同样的问题,所以我的代码中的某些内容并不冲突。显然,我错过了一些东西(可能很简单!)。任何帮助表示赞赏。这是我的代码。

<div id="methodsaccordion" role="tablist" aria-multiselectable="true">

<div class="card mb-3">
    <div class="card-header" role="tab" id="headingOne">
        <h5 class="mb-0">
            <a data-toggle="collapse" data-parent="#methodsaccordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
                <img class="img-fluid" src="img/image.jpg" style="width: 10%" />
                Child 0-2 years of age
            </a>
        </h5>
    </div>
    <div id="collapseOne" class="collapse" role="tabpanel" aria-labelledby="headingOne">
        <div class="card-block">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed ...
        </div> <!-- end card block -->
    </div> <!-- end collapse 1 -->
</div> <!-- end card -->

<div class="card mb-3">
    <div class="card-header" role="tab" id="headingTwo">
        <h5 class="mb-0">
            <a data-toggle="collapse" data-parent="#methodsaccordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                <img class="img-fluid" src="img/image.jpg" style="width: 10%" />
                Child 2-5 years of age
            </a>
        </h5>
    </div>
    <div id="collapseTwo" class="collapse" role="tabpanel" aria-labelledby="headingTwo">
        <div class="card-block">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed ...
        </div> <!-- end card block -->
    </div> <!-- end collapse 2 -->
</div> <!-- end card -->

<div class="card">
    <div class="card-header" role="tab" id="headingThree">
        <h5 class="mb-0">
            <a data-toggle="collapse" data-parent="#methodsaccordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
                <img class="img-fluid" src="img/image.jpg" style="width: 10%" />
                Child over 5 years of age
            </a>
        </h5>
    </div>
    <div id="collapseThree" class="collapse" role="tabpanel" aria-labelledby="headingThree">
            <div class="card-block">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed ....
        </div> <!-- end card block -->
    </div> <!-- end collapse 3 -->
</div> <!-- end card -->

【问题讨论】:

    标签: twitter-bootstrap accordion


    【解决方案1】:

    这似乎是 Bootstrap 4 官方版本的回归。您需要将 data-parent 移动到可折叠内容而不是折叠链接。

    正确的代码应该是这样的:

    <div id="methodsaccordion" role="tablist" aria-multiselectable="true">
      <div class="card mb-3">
        <div class="card-header" role="tab" id="headingOne">
          <h5 class="mb-0">
            <a data-toggle="collapse" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
              <img class="img-fluid" src="img/image.jpg" style="width: 10%" />
              Child 0-2 years of age
            </a>
          </h5>
        </div>
        <div id="collapseOne" class="collapse" role="tabpanel" data-parent="#methodsaccordion" aria-labelledby="headingOne">
          <div class="card-block">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed ...
          </div> <!-- end card block -->
        </div> <!-- end collapse 1 -->
      </div> <!-- end card -->
    
      <div class="card mb-3">
        <div class="card-header" role="tab" id="headingTwo">
          <h5 class="mb-0">
            <a data-toggle="collapse" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
              <img class="img-fluid" src="img/image.jpg" style="width: 10%" />
              Child 2-5 years of age
            </a>
          </h5>
        </div>
        <div id="collapseTwo" class="collapse" role="tabpanel" data-parent="#methodsaccordion" aria-labelledby="headingTwo">
          <div class="card-block">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed ...
          </div> <!-- end card block -->
        </div> <!-- end collapse 2 -->
      </div> <!-- end card -->
    
      <div class="card">
        <div class="card-header" role="tab" id="headingThree">
          <h5 class="mb-0">
            <a data-toggle="collapse" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
              <img class="img-fluid" src="img/image.jpg" style="width: 10%" />
              Child over 5 years of age
            </a>
          </h5>
        </div>
        <div id="collapseThree" class="collapse" role="tabpanel" data-parent="#methodsaccordion" aria-labelledby="headingThree">
          <div class="card-block">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed ....
          </div> <!-- end card block -->
        </div> <!-- end collapse 3 -->
      </div> <!-- end card -->
    </div>
    

    【讨论】:

    • 嗯,这对我也不起作用。我在我的网站上试了一下。我仍然可以打开所有三个面板。您是否能够让它在特定环境中工作?
    • 对不起,我忘了包含父 div。 Fiddle here
    • 谢谢!最有帮助。我实际上找到了另一个解决方案,就是将 class="collapse" 改为 class="card-block collapse"。我已经实现了两者。现在效果很好。
    猜你喜欢
    • 2012-12-21
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多