微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – Bootstrap 3折叠手风琴:折叠所有作品,但是在维护数据父代时无法展开

我使用Bootstrap 3并尝试设置以下手风琴/折叠结构:

> Onload:一组中的每个手风琴小组完全崩溃,作为记录/预期的功能
>按钮单击:每个手风琴面板展开并单击切换无效(包括URL锚点效果)。
>另一个按钮点击:所有面板返回上载状态;全部折叠和正常点击。

我已经做到了第2步,但是当我在第3步再次点击按钮时,它没有任何效果。我也看不到Chrome开发工具中报告的控制台错误,或通过本地JSHint运行代码

每次点击按钮时,我都希望这个循环是可重复的。

我已经在http://bootply.com/98140http://jsfiddle.net/A9vCx/设置了我的代码

我很想知道我在做错什么,我很感激你的建议。谢谢!

我的HTML:

<button class="collapse-init">Click to disable accordion behavior</button>
<br><br>
<div class="panel-group" id="accordion">
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#collapSEOne">
          Collapsible Group Item #1
        </a>
      </h4>
    </div>
    <div id="collapSEOne" class="panel-collapse collapse">
      <div class="panel-body">
        Anim pariatur cliche reprehenderit,enim eiusmod high life accusamus terry richardson ad squid.
      </div>
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
          Collapsible Group Item #2
        </a>
      </h4>
    </div>
    <div id="collapseTwo" class="panel-collapse collapse">
      <div class="panel-body">
        Anim pariatur cliche reprehenderit,enim eiusmod high life accusamus terry richardson ad squid.
      </div>
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">
          Collapsible Group Item #3
        </a>
      </h4>
    </div>
    <div id="collapseThree" class="panel-collapse collapse">
      <div class="panel-body">
        Anim pariatur cliche reprehenderit,enim eiusmod high life accusamus terry richardson ad squid.
      </div>
    </div>
  </div>
</div>

我的JS:

$(function() {

  var $active = true;

  $('.panel-title > a').click(function(e) {
    e.preventDefault();
  });

  $('.collapse-init').on('click',function() {
    if(!$active) {
      $active = true;
      $('.panel-title > a').attr('data-toggle','collapse');
      $('.panel-collapse').collapse({'toggle': true,'parent': '#accordion'});
      $(this).html('Click to disable accordion behavior');
    } else {
      $active = false;
      $('.panel-collapse').collapse({'toggle': true,'parent': '#accordion'});
      $('.panel-title > a').removeAttr('data-toggle');
      $(this).html('Click to enable accordion behavior');
    }
  });

});

解决方法

更新答案

尝试打开设置为手风琴,即数据 – 父属性集的折叠控件的多个面板可能证明是相当有问题和错误的(请参阅multiple panels open after programmatically opening a panel上的此问题)

相反,最好的办法是:

>允许每个面板单独切换
>然后,在适当的情况下手动执行手风琴行为。

要允许每个面板单独切换,在data-toggle =“collapse”元素上,将data-target属性设置为.collapse面板ID选择器(而不是将父母父属性设置为父控件),您可以阅读更多关于这个问题Modify Twitter Bootstrap collapse plugin to keep accordions open

大致来说,每个面板应该如下所示:

<div class="panel panel-default">
   <div class="panel-heading">
         <h4 class="panel-title"
             data-toggle="collapse" 
             data-target="#collapSEOne">
             Collapsible Group Item #1
         </h4>
    </div>
    <div id="collapSEOne" 
         class="panel-collapse collapse">
        <div class="panel-body"></div>
    </div>
</div>

要手动执行手风琴行为,您可以为任何面板显示之前出现的崩溃显示事件创建一个处理程序。使用此功能可确保任何其他打开的面板在选定的面板显示之前关闭(请参阅此answer to multiple panels open)。您还将只希望代码在面板处于活动状态时执行。要做到这一点,添加以下代码

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

然后使用显示和隐藏来切换每个面板和数据切换的可见性,以启用和禁用控件。

$('#collapse-init').click(function () {
    if (active) {
        active = false;
        $('.panel-collapse').collapse('show'); $('.panel-title').attr('data-toggle','');
        $(this).text('Enable accordion behavior');
    } else {
        active = true;
        $('.panel-collapse').collapse('hide'); $('.panel-title').attr('data-toggle','collapse');
        $(this).text('disable accordion behavior');
    }
});

Working demo in jsFiddle

原文地址:https://www.jb51.cc/jquery/182943.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐