Bootstrap手风琴:防止打开的面板塌陷

问题描述

为了防止当前打开的面板崩溃,我使用了this suggestion。它在JSFiddle中工作,但是当我将所有内容复制到新页面时,它无法防止折叠。我的测试标记如下。

我是不是以错误的顺序加载了东西?如何使用它来防止崩溃?


<!DOCTYPE html>
<html>
<head>
  <Meta charset="utf-8" />
  <Meta name="viewport" content="width=device-width,initial-scale=1.0">
  <title>Example</title>
  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" />

  <style>
    div.wrapper {
      margin-right: auto;
      margin-left: auto;
      margin-top: 100px;
      width: 500px;
    }
  </style>

  <script>
    $('#accordionExample').on('show.bs.collapse',function () {
      $(this).data('isShowing',true);
    });

    $('#accordionExample').on('hide.bs.collapse',function (event) {
      if (!$(this).data('isShowing')) {
        event.preventDefault();
      }

      $(this).data('isShowing',false);
    });
  </script>
</head>
<body>
  <div class="wrapper">

    <div class="accordion" id="accordionExample">
      <div class="card">
        <div class="card-header" id="headingOne">
          <h2 class="mb-0">
            <button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#collapSEOne" aria-expanded="true" aria-controls="collapSEOne">
              Collapsible Group Item #1
            </button>
          </h2>
        </div>

        <div id="collapSEOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
          <div class="card-body">
            Anim pariatur cliche reprehenderit,enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute,non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor,sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica,craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table,raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
          </div>
        </div>
      </div>
      <div class="card">
        <div class="card-header" id="headingTwo">
          <h2 class="mb-0">
            <button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
              Collapsible Group Item #2
            </button>
          </h2>
        </div>
        <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionExample">
          <div class="card-body">
            Anim pariatur cliche reprehenderit,raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
          </div>
        </div>
      </div>
      <div class="card">
        <div class="card-header" id="headingThree">
          <h2 class="mb-0">
            <button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
              Collapsible Group Item #3
            </button>
          </h2>
        </div>
        <div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#accordionExample">
          <div class="card-body">
            Anim pariatur cliche reprehenderit,raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
          </div>
        </div>
      </div>
    </div>

  </div>
</body>
</html>

解决方法

“也许我加载顺序错误吗?”

就是这样。

我将<script>元素从文档<head>中移到了页面的末尾(在手风琴之后),它开始起作用。