在 Bootstrap 3 手风琴中添加动态闭合面板

Add dynamic closed panels in Bootstrap 3 accordion

本文关键字:动态 添加 Bootstrap 手风琴      更新时间:2023-09-26

我使用Bootstrap 3手风琴,我需要在其中添加动态面板。我有这样的东西:

+------------------+
| Panel 1 (closed) |
+------------------+
| Panel 2 (opened) | <-- This is the template panel
| CONTENT          |
+------------------+
| Dynamic panels   | <-- All dynamic panels must be closed, not opened
+------------------+     after they are added

问题是,如果打开面板 2,则会打开动态面板(从面板 2 克隆)。如果面板 2 关闭,则动态面板将关闭。

我希望关闭所有动态面板,并且只有在单击它们的标题时才会打开它们(如在 Bootstrap 示例中)。我该如何解决它?

这是我的jQuery代码。

var $template = $(".template");
var hash = 2;
$(".btn-add-panel").on("click", function () {
    var $newPanel = $template.clone();
    // I thought that .in class makes the panel to be opened
    $newPanel.find(".collapse").removeClass("in");
    $newPanel.find(".accordion-toggle").attr("href",  "#" + (++hash))
             .text("Dynamic panel #" + hash);
    $newPanel.find(".panel-collapse").attr("id", hash);
    $("#accordion").append($newPanel.fadeIn());
});

JSFiddle

我只是在这一行添加了addClass("collapse")

$newPanel.find(".panel-collapse").attr("id", hash) .addClass("collapse").removeClass("in") ;

var $template = $(".template");
var hash = 2;
$(".btn-add-panel").on("click", function () {
    var $newPanel = $template.clone();
    $newPanel.find(".collapse").removeClass("in");
    $newPanel.find(".accordion-toggle").attr("href",  "#" + (++hash))
             .text("Dynamic panel #" + hash);
    $newPanel.find(".panel-collapse")
             .attr("id", hash)
             .addClass("collapse")
             .removeClass("in");
    $("#accordion").append($newPanel.fadeIn());
});

小提琴演示