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

前端之家收集整理的这篇文章主要介绍了jquery – Bootstrap 3折叠手风琴:折叠所有作品,但是在维护数据父代时无法展开前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Bootstrap 3并尝试设置以下手风琴/折叠结构:

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

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

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

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

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

我的HTML:

@H_403_16@<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:

@H_403_16@$(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

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

@H_403_16@<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)。您还将只希望代码在面板处于活动状态时执行。要做到这一点,添加以下代码

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

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

@H_403_16@$('#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

猜你在找的jQuery相关文章