我遇到了bootstrap 3折叠的问题,在以编程方式打开一个面板后,可以在重新打开第一个面板的同时保持另一个面板打开。
我的HTML
<button type="button" class="btn showpanel">Show panel 3</button>
<button type="button" class="btn hidepanel">Hide panel 3</button>
<button type="button" class="btn openpanel">Open panel 3</button>
<button type="button" class="btn closepanel">Close panel 3</button>
<hr/>
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#panel1">Panel 1</a>
</h4>
</div>
<div id="panel1" class="panel-collapse collapse">
<div class="panel-body">
Contents panel 1
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#panel2">Panel 2</a>
</h4>
</div>
<div id="panel2" class="panel-collapse collapse">
<div class="panel-body">
Contents panel 2
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#panel3">Panel 3</a>
</h4>
</div>
<div id="panel3" class="panel-collapse collapse">
<div class="panel-body">
Contents panel 3
</div>
</div>
</div>
</div>
和一些JavaScript
$(".hidepanel").on("click", function() {
$("#panel3").parent().hide();
});
$(".showpanel").on("click", function() {
$("#panel3").parent().show();
});
$(".openpanel").on("click", function() {
$("#panel3").collapse('show');
});
$(".closepanel").on("click", function() {
$("#panel3").collapse('hide');
});
My jsfiddle that demonstrates this issue
复制:
因此,以编程方式打开面板似乎会搞乱有关面板状态的引导程序内部注册?我看不出第三个面板的“状态改变”有什么明显的错误(如你所料,它是类从“崩溃”到“进入”再回到“崩溃”)。
发布于 2013-10-03 19:56:43
您可以为折叠show
事件创建一个处理程序,该事件在显示任何面板之前发生。
添加此选项可确保在显示所选面板之前关闭所有其他打开的面板:
$('#accordion').on('show.bs.collapse', function () {
$('#accordion .in').collapse('hide');
});
您可以在此处阅读有关collapse
活动的更多信息:http://getbootstrap.com/javascript/#collapse
发布于 2015-01-18 22:29:43
我认为问题是由于您更改开放式面板的方式造成的。您需要在适当的面板链接上触发click事件,而不是使用“show”功能。例如,对于id为" accordion“、具有三个面板的手风琴,如果要显示两个面板,请使用:
$("a[href=#accordion-2]").click()
或者您为第二个面板指定的任何ID (我使用twitterboostrapmvc,因此面板ID是从accordion ID自动生成的)。
发布于 2017-11-23 23:38:50
对于任何使用data-target
属性(而不是href
属性)控制折叠的人来说,这是对教授尼姆罗德的回答的改编,如果目标当前处于隐藏状态,则会单击相关元素。(请注意,if
检查依赖于使用默认应用的collapsed
类设置accordion,我发现这对利用using css to put a chevron icon on the accordions很有用)。
var expandAccordion = function() {
var header = $('[data-target="#accordion-0"]');
if (header.hasClass('collapsed')) {
header.click();
}
}
https://stackoverflow.com/questions/19158259
复制相似问题