javascript - 如何在关闭 Accordion 时自动关闭 Accordion 内部的所有可折叠元素?

标签 javascript jquery bootstrap-4

我在堆栈溢出上找到了这个主题:Closing parent accordion needs to close all children accordion其中或多或少包含我正在搜索的内容。

我正在使用 bootstrap 4,我的问题是我不知道如何调整其他主题的代码,以便在关闭主 Accordion 卡时关闭 Accordion 和单个可折叠项目...

有人可以帮忙吗?这是我的 fiddle 示例:

https://jsfiddle.net/fgh0qw9x/

到目前为止我尝试的是调整代码,如下所示:

 closeChildrenAccordion : function (accordion) {
            if (jQuery(".show")) {
                jQuery(".show").unbind().click(function () {
                    jQuery(accordion).removeClass('show');
                    var parentPanelHeading = jQuery(this).closest('.card-header'); // Get parent
                    var siblings           = parentPanelHeading.siblings()[0]; // Get div that needs to be closed when closing parent div

                    if(jQuery(siblings).hasClass("in"))
                    {
                        jQuery(siblings).find('a').each(function (index, element) {
                            if(jQuery(element).hasClass('show'))
                                element.click();
                        });
                    }


                });


            }
        }

但是我很诚实,我不太理解代码,希望有人能帮助我......

最佳答案

您可以将处理程序附加到 hide.bs.collapse在折叠项目之前触发,然后查找当前打开的其他可折叠元素。这应该适用于任何深度的元素:

$('.collapse').on('hide.bs.collapse', function() {
  $(this).find('.collapse.show').removeClass('show');
})

我们直接删除该类,因为如果您尝试使用其 api 切换折叠面板,它将再次触发 hide.bs.collapse 事件。

关于javascript - 如何在关闭 Accordion 时自动关闭 Accordion 内部的所有可折叠元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842023/

相关文章:

javascript - 如何在 Angular 2 应用程序中处理 cookie 中的 JSESSIONID?

javascript - Laravel 5.1 typeahead.js 无法找到任何数据

javascript - 查找具有特定类别的最接近的 div

javascript - 使用 IF 条件更改 <td> 类或隐藏 jQuery 插件可编辑

html - 导航栏上的 Bootstrap 4 sticky-top 类不起作用

javascript - 在没有服务器端渲染(cookie)的情况下使用 CSP 随机数

javascript - Jquery 倒计时器仅在页面上加载一次

javascript - Tab容器刷新

javascript - MVC : Get selected text from <Select> using JQuery

javascript - Electron 中的Bootstrap工具提示功能