0

Tl; dr:滚动到底部以获得更简单的解释。

我想我有一个稍微独特的问题。首先也是最重要的.. 我已经查看了互联网/谷歌,包括该网站,以及提出这个问题时的建议。

回到手头的主题,我正在生成一个嵌套的手风琴系列,其中嵌套的数量是动态生成的。也就是说,底层项目可以有多少个父项没有设置限制,因此它是不是去'.acord1,.acord2,.acord3'等的选项。

问题..手风琴中的一些标题是底层项目,它们没有子项,没有附加手风琴。

下面的示例 html 不包含上述项目,因为它重现了面临的问题,即添加header:选项(我用来排除前面提到的项目)时,它触发顶级手风琴,关闭它当其中一个孩子被点击时。

以下是我设法用最少的代码重现的测试用例:

<div class="acord">
    <h3>test1</h3>
    <div class="acord">
        <h3>test2</h3>
        <div>test2cont</div>
    </div>
    <h3 class="item">test3</h3>
</div>
$(".acord").accordion({
    header: "h3:not(.item)",
    heightStyle: "content",
    active: false,
    collapsible: true,
});

如果上述情况是tl;dr,指定带有嵌套手风琴的标题选项不起作用,因为子手风琴(被点击)的父级,然后关闭。

Js小提琴

有解决办法吗?

4

1 回答 1

1

以下是我管理的解决方法。这很丑陋,但还有其他一些事情可以完成工作。如果有人有比删除 jquery 手风琴标题的图标和填充以及单击功能更好的想法,请回答这个问题。直到那时:

$(".acord").accordion({
    heightStyle: "content",
    active: false,
    collapsible: true,
    changestart: function (event, ui) {
        if ($(event.currentTarget).hasClass("item")) {
            event.preventDefault();
            $(event.currentTarget).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    }
});

编辑:

感谢jQuery bug tracker的人们,这个问题已经用更好的解决方案解决了:

$(".acord").accordion({
    header: "> h3:not(.item)", //this line
    heightStyle: "content",
    active: false,
    collapsible: true
});
于 2013-01-25T09:16:41.397 回答