首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bootstrap 3折叠可以在以编程方式打开面板后打开多个面板

Bootstrap 3折叠可以在以编程方式打开面板后打开多个面板
EN

Stack Overflow用户
提问于 2013-10-03 19:40:08
回答 3查看 44.3K关注 0票数 17

我遇到了bootstrap 3折叠的问题,在以编程方式打开一个面板后,可以在重新打开第一个面板的同时保持另一个面板打开。

我的HTML

代码语言:javascript
复制
<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

代码语言: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

复制:

  1. 单击“打开面板3”按钮。
  2. 单击“面板2”将其打开。到目前为止还没有problems.
  3. Click 'Panel 3‘来再次打开它。面板2仍处于打开状态!

因此,以编程方式打开面板似乎会搞乱有关面板状态的引导程序内部注册?我看不出第三个面板的“状态改变”有什么明显的错误(如你所料,它是类从“崩溃”到“进入”再回到“崩溃”)。

EN

回答 3

Stack Overflow用户

发布于 2013-10-03 19:56:43

您可以为折叠show事件创建一个处理程序,该事件在显示任何面板之前发生。

添加此选项可确保在显示所选面板之前关闭所有其他打开的面板:

代码语言:javascript
复制
$('#accordion').on('show.bs.collapse', function () {
    $('#accordion .in').collapse('hide');
});

Bootply demo

您可以在此处阅读有关collapse活动的更多信息:http://getbootstrap.com/javascript/#collapse

票数 28
EN

Stack Overflow用户

发布于 2015-01-18 22:29:43

我认为问题是由于您更改开放式面板的方式造成的。您需要在适当的面板链接上触发click事件,而不是使用“show”功能。例如,对于id为" accordion“、具有三个面板的手风琴,如果要显示两个面板,请使用:

代码语言:javascript
复制
$("a[href=#accordion-2]").click()

或者您为第二个面板指定的任何ID (我使用twitterboostrapmvc,因此面板ID是从accordion ID自动生成的)。

票数 2
EN

Stack Overflow用户

发布于 2017-11-23 23:38:50

对于任何使用data-target属性(而不是href属性)控制折叠的人来说,这是对教授尼姆罗德的回答的改编,如果目标当前处于隐藏状态,则会单击相关元素。(请注意,if检查依赖于使用默认应用的collapsed类设置accordion,我发现这对利用using css to put a chevron icon on the accordions很有用)。

代码语言:javascript
复制
var expandAccordion = function() {
    var header = $('[data-target="#accordion-0"]');
    if (header.hasClass('collapsed')) {
        header.click();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19158259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档