我正在尝试使用Twitter引导和accordion and collapse插件来模拟Outlook栏,到目前为止,我已经让collapse and accordion工作了,但它目前允许折叠所有部分。
我想限制它,以便始终显示一个且只有一个。
这是我正在研究的一个:http://jsfiddle.net/trajano/SMT9D/我认为这是沿着
$('#accordions').on('hide', function (event) {
console.warn("HIDE TRIGGERED, check if trying to hide the active one if so stop");
})
更新2018
下面介绍了如何在引导v3或v4中至少保持打开。这意味着打开的手风琴只能通过切换另一个打开的手风琴来关闭。
靴带4
https://www.codeply.com/go/bbCcnl0jBB
// the current open accordion will not be able to close itself
$('[data-toggle="collapse"]').on('click',function(e){
if ( $(this).parents('.accordion').find('.collapse.show') ){
var idx = $(this).index('[data-toggle="collapse"]');
if (idx == $('.collapse.show').index('.collapse')) {
e.stopPropagation();
}
}
});
此外,请参阅此答案,其中显示了如何指定一个“默认”手风琴,当所有其他手风琴关闭时,该手风琴将打开。
引导3
$('[data-toggle="collapse"]').on('click',function(e){
if($(this).parents('.panel').find('.collapse').hasClass('in')){
var idx = $(this).index('[data-toggle="collapse"]');
var idxShown = $('.collapse.in').index('.accordion-body');
if (idx==idxShown) {
e.stopPropagation();
}
}
});
https://www.codeply.com/go/yLw944BrgA
<div class="accordion" id="myAccordion">
<div class="panel">
<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#collapsible-1" data-parent="#myAccordion">Question 1?</button>
<div id="collapsible-1" class="collapse">
..
</div>
</div>
<div class="panel">
<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#collapsible-2" data-parent="#myAccordion">Question 2?</button>
<div id="collapsible-2" class="collapse">
..
</div>
</div>
<div class="panel">
<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#collapsible-3" data-parent="#myAccordion">Question 3?</button>
<div id="collapsible-3" class="collapse">
...
</div>
</div>
</div>
(注意:Bootstrap 3中需要面板
类才能使手风琴行为正常工作)
我想精确地说出雨果·多佐伊的答案
http://jsfiddle.net/SMT9D/61/
您应该添加e。preventDefault()如果页面中有滚动条,则防止HTML锚的默认行为
$('.panel-heading a').on('click',function(e){
if($(this).parents('.panel').children('.panel-collapse').hasClass('in')){
e.preventDefault();
e.stopPropagation();
}
});
下面是一个简单的方法:
$('.accordion .btn-link').on('click', function(e) {
if (!$(this).hasClass('collapsed')) {
e.stopPropagation();
}
});
来自@mr_joncollette的评论
用于引导3的JSFIDLE。
引导3的代码:
$('.panel-heading a').on('click',function(e){
if($(this).parents('.panel').children('.panel-collapse').hasClass('in')){
e.stopPropagation();
}
// You can also add preventDefault to remove the anchor behavior that makes
// the page jump
// e.preventDefault();
});
代码检查单击的元素是否是当前显示的元素(由类“in”显示),如果它确实具有“in”类,则停止隐藏过程。
用于Bootstrap 2的JsFiddle。
引导2的代码:
js prettyprint-override">$('.accordion-toggle').on('click',function(e){
if($(this).parents('.accordion-group').children('.accordion-body').hasClass('in')){
e.stopPropagation();
}
// You can also add preventDefault to remove the anchor behavior that makes
// the page jump
// e.preventDefault();
});
注意:如果您想在手风琴上附加更多点击事件,请小心,因为e。stopPropagation()将阻止检查后发生的事件。
我尝试了以下代码,除了图标外,一切都很好。我试图在Google上找到一些解决方案,但我找不到我正在寻找的解决方案。 当我点击其中一个手风琴时,另一个手风琴应该折叠,当前点击的手风琴应该打开,同时fa图标应该根据手风琴的位置而改变。 这是我到目前为止已经尝试过的
在引导手风琴中,我不需要单击文本,而是希望在单击div中的任何位置时使其折叠。 我正在使用引导程序3。所以它不是手风琴,而是一个可折叠的面板。你知道如何让整个面板都可以点击吗?
问题内容: 我的页面上有3个Twitter Bootstrap手风琴,每一个都这样设置: 该“的手风琴s为像上面显示的一个,所以,和。每个手风琴的面板数相同。 如何更改此设置,以便一次只能打开一个面板?目前, 每个手风琴 可以打开一个面板,这不是我想要的行为。 演示: JSFiddle 问题答案: 尝试这个:
我制作了一个带有引导的手风琴,但它处于for循环中,所以当我单击手风琴的一个项目时,所有其他项目都会同时打开。我怎么能只点击打开手风琴的一个项目?
我有一个非常好的手风琴,它在网站上看起来很好,并且可以正常工作。但是,我正在尝试为其添加更多JavaScript功能,以使其看起来更专业。 目前,手风琴允许您一次打开多个面板,即如果我打开一个选项卡,然后打开另一个选项卡,两个选项卡将同时打开。关闭这些面板的唯一方法是重新单击标题。 我想要的是一些防止同时打开多个选项卡的JavaScript代码,所以如果我单击一个新面板,它应该首先关闭现有的打开面
问题内容: 我可能是个白痴,但是如何在jQueryUI的手风琴中打开多个部分?演示一次只能打开一个……我正在寻找一个可折叠的菜单类型系统。 问题答案: 这原本是讨论中[的手风琴jQuery用户界面文档: 注意:如果要一次打开多个部分,请不要使用手风琴 手风琴不允许同时打开一个以上的内容面板,为此需要付出很多努力。如果您正在寻找一个可以打开多个内容面板的小部件,请不要使用它。通常它可以用几行jQue