用户界面 - Jquery UI 嵌套折叠项,其中包含顶级可折叠项中的内容



我正在尝试创建一个包含多级组织的导航菜单。我正在构建一个嵌套的jQuery UI手风琴,如果我的所有内容都在手风琴的最低级别(最深)嵌套中,它就会很好地工作。问题是某些元素将具有内容和子手风琴.如果我在顶部手风琴的侧面放置一些文本,它看起来很棒......但是一旦我将其包装在标签中,它就会破坏该元素中的嵌套手风琴

这是我试图让它看起来像什么的模型照片样机

我当前的网页

    <div id="faqs-container" class="accordian">
    <h3><a href="#">One</a></h3>
   <div class="accordian">
           I really want a list here!
        <h3><a class=href="#">A</a></h3>
        <div>
            <ul>
                <li>list</li>
                <li>list</li>
                <li>list</li>
            </ul>
            </div>
        <h3><a href="#">B</a></h3>
        <div>    
            <ul>
                <li>list</li>
                <li>list</li>
                <li>list</li>
            </ul>
       </div>
    </div>
    <h3><a href="#">Two</a></h3>
    <div class="accordian">
         <ul>
                <li>But They</li>
                <li>Do Not</li>
                <li>Work</li>
            </ul>
        <h3><a href="#">A2</a></h3>
        <div>
            <ul>
                <li>list</li>
                <li>list</li>
                <li>list</li>
            </ul>
        </div>
        <h3><a href="#">B2</a></h3>
        <div>
            <ul>
                <li>list</li>
                <li>list</li>
                <li>list</li>
            </ul>
        </div>
    </div>
</div>

Jquery

 $("div.accordian").accordion({
        autoHeight: false,
        collapsible: true,
        active: false
    });

像这样运行代码会为第一部分生成一个良好的嵌套折叠项,但第二部分呈现不正确。看起来jQuery开始在标题之后抓取第一个html元素来构建手风琴。

我在调用手风琴时指定了标题选项,如下所示

$("div.accordian").accordion({
    autoHeight: false,
    collapsible: true,
    active: false,
    header: 'h3'
});

这接近预期效果。列表呈现在正确的位置,但第二部分中的嵌套手风琴不起作用。

我设置了一个小提琴

这应该有效

<div id="faqs-container" class="accordian">
    <h3><a href="#">One</a></h3>
   <div class="accordian">
           I really want a list here!
        <h3><a class=href="#">A</a></h3>
        <div>
            <ul>
                <li>list</li>
                <li>list</li>
                <li>list</li>
            </ul>
            </div>
        <h3><a href="#">B</a></h3>
        <div>    
            <ul>
                <li>list</li>
                <li>list</li>
                <li>list</li>
            </ul>
       </div>
    </div>
    <h3><a href="#">Two</a></h3>
    <div> <-- A Wrapper -->
             <ul>
                    <li>But They</li>
                    <li>Do Not</li>
                    <li>Work</li>
                </ul>
         <div class="accordian">
            <h3><a href="#">A2</a></h3>
            <div>
                <ul>
                    <li>list</li>
                    <li>list</li>
                    <li>list</li>
                </ul>
            </div>
            <h3><a href="#">B2</a></h3>
            <div>
                <ul>
                    <li>list</li>
                    <li>list</li>
                    <li>list</li>
                </ul>
            </div>
        </div>
    </div>
</div>

演示:小提琴

对于选项卡Two,您需要创建另一个包装元素并将ul和子accordion作为其子元素放置

看看这个小提琴

您是正确的,它查看标题后面的下一个元素,因此您可以简单地用div包装顶级手风琴的内容,然后包含您的子手风琴。

<h3><a href="#">Two</a></h3>
    <div>  <!-- This wrapper -->
        <ul>
            <li>But They</li>
            <li>Do Not</li>
            <li>Work</li>
        </ul>
        <div class="accordian">
             <h3><a href="#">A2</a></h3>
            <div>
                <ul>
                    <li>list</li>
                    <li>list</li>
                    <li>list</li>
                </ul>
            </div>
             <h3><a href="#">B2</a></h3>
            <div>
                <ul>
                    <li>list</li>
                    <li>list</li>
                    <li>list</li>
                </ul>
            </div>
        </div>
    </div>

最新更新