我正在使用 Bootstrap 3 并尝试设置以下手风琴/折叠结构:
页面加载时:每个手风琴面板在组内完全折叠并按预期工作。
按钮点击时:每个手风琴面板都会展开,并且单击切换无效(包括 URL 锚点效果)。
另一个按钮点击时:所有面板返回到 onload 状态;所有的手风琴面板都是正常折叠和可点击的。
我已经完成了第二步,但当我在第三步再次点击该按钮时,它没有任何效果。我还没有在 Chrome Dev Tools 中看到任何控制台错误报告,也没有通过本地 JSHint 运行代码时看到错误。
我希望每次单击按钮时都可以重复这个循环。
我在这里设置了我的代码 http://bootply.com/98140 和 http://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');
}
});
});
href
。我用<p>
替换了面板切换锚点,这也意味着我们可以删除preventDefault()
部分!http://jsfiddle.net/3NuHh/2/ - cfxpanel-title
中只有一个<p>
元素,我们可能不需要它:) jsFiddle - KyleMit