【问题标题】:How to automatically close all collapsible elements inside of the accordion when closing the accordion?关闭手风琴时如何自动关闭手风琴内部的所有可折叠元素?
【发布时间】:2019-11-12 11:38:45
【问题描述】:

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

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

有人可以帮忙吗?这是我的示例小提琴:

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();
                        });
                    }


                });


            }
        }

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

【问题讨论】:

    标签: javascript jquery bootstrap-4


    【解决方案1】:

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

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

    我们直接删除了类,因为如果您尝试使用其 api 切换手风琴,它将再次触发 hide.bs.collapse 事件。

    【讨论】:

    • 如何指定仅在关闭主手风琴时调用该函数?我在开始$('.call-collapse').on('hide.bs.collapse', function()... 时尝试了一个单独的课程,我粘贴在主手风琴中。但不幸的是,这不起作用。 - 原因是我在手风琴里面有一些可折叠的东西,当打开另一个里面时不应该关闭。仅当关闭主手风琴卡时,所有内容都应关闭...
    • @JakobTiebel 是的,类似的东西应该可以。我修改了你的fiddle。打开你的控制台,它只会触发有子手风琴的那个。
    • @JakobTiebel 您是否不想在关闭子项时折叠子项,而仅在单击它时才折叠子项?不在其他元素上强制折叠?
    • 不幸的是,这不起作用。请参阅我更新的小提琴:jsfiddle.net/29qowfe1 - 儿童可折叠不应关闭其他儿童可折叠。只有父母(主要)在关闭时也应该关闭所有孩子
    • @JakobTiebel 好的,我明白了,这是因为冒泡。我认为this 是您正在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2017-10-26
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多