【问题标题】:How do I restrict a collapsible item to stay expanded unless i click the other collapsible items to expand but not the collapsible item itself如何限制可折叠项目保持展开,除非我单击其他可折叠项目以展开而不是可折叠项目本身
【发布时间】:2025-12-30 17:45:10
【问题描述】:

我正在开发一个移动网站并使用 jquerymobile。 我在手风琴中有 4 个可折叠的物品。我想让其中一项保持扩展。如果我单击展开的项目,它会被折叠(我不想折叠这个项目)。 如果我点击任何其他折叠的项目,最后一个展开的项目就会折叠(没关系)。

感谢您的帮助。手风琴类别的动态javascript代码如下:

function create-accordion(categories)
    {
        category_array = categories;
        jQuery.each(categories, function( index, value )
        {
            var div =  '<div data-role="collapsible"  class="custom-collapsible"  ';
            if(index == 0)
                div += 'data-collapsed="false"';
            div += '>';

            div += '<h3 style:"padding:0px; margin:0px;"> ' + value.name + '</h3>\
                        <div class= "collapsable-limit-theme">\
                            <div data-role="content" style="padding:0px; margin:0px;">\
                                <div class="ui-grid-c, Grid" id="Grid' + value.id + '">\
                                </div>\
                            </div>\
                        </div>\
                    </div>';

            $($('#accord'), this).append(div);
        });

        $( "#accord" ).collapsibleset( "refresh" );
    }

和html代码

<div id="accord" data-role="collapsible-set" border-radius="0px" >
        </div>

问候

【问题讨论】:

    标签: javascript html jquery-ui jquery-mobile jquery-mobile-collapsible


    【解决方案1】:

    您需要聆听点击.ui-collapsible-heading-toggle 并检查点击的可折叠是折叠还是展开。如果折叠项被折叠,它将有一个类.ui-collapsibe-collapsed

    如果展开的可折叠被点击,它会通过return false阻止自身折叠,否则,它将折叠所有展开的。

    $(".ui-collapsible-heading-toggle").on("click", function () {
    
        // clicked collaspible
        var collapsible = $(this).closest(".ui-collapsible");
    
        // check if its whether collapsed
        if (collapsible.hasClass("ui-collapsible-collapsed")) {
    
            // collapse expanded collapsibles
            $(".ui-collapsible").not(collapsible).trigger("collapse");
        } else {
            // keep expanded clicked collapsible as is
            return false;
        }
    });
    

    Demo

    【讨论】: