【问题标题】:Nested accordion menu in jQueryjQuery中的嵌套手风琴菜单
【发布时间】:2009-01-26 09:55:18
【问题描述】:

我有一个使用一组嵌套手风琴实现的菜单,1 和 2,每个都有元素,a 和 b。

我想实现如下逻辑:

  • 点击1a会得到1a的数据和两个子菜单2a,2b

  • 当我点击2a,2b时,我会分别得到每一个的数据。

问题

想要的结果:

  • 我只想为最后一次点击显示 nth-most 子元素,折叠所有其他元素。
  • 初始化时,只有1a 和1b 应该可见。

当前结果:

  • 点击1b,然后点击2b,1b 仍然完全可见。

JavaScript 代码

$(document).ready(function() {
    $("#acc1").accordion({
        active:".ui-accordion-left",
        alwaysOpen: false,
        autoheight: false,
        header: 'a.acc1',
        clearStyle: true
    });
    $("#acc2").accordion({
        alwaysOpen: false,
        autoheight: false,
        header: 'a.acc2',
        clearStyle: true
    });
});

HTML:

<ul id="acc1" class="ui-accordion-container">
    <li>
        <div class="ui-accordion-left"></div>
        <a class="ui-accordion-link acc1">1a
            <span class="ui-accordion-right"></span>
        </a>
        <div>
            data of 1a<br/>
            data of 1a<br/>
            data of 1a<br/>
        </div>
        <div>
            <ul class="ui-accordion-container" id="acc2">
                <li>
                    <div class="ui-accordion-left"></div>
                    <a class="ui-accordion-link acc2">2a
                        <span class="ui-accordion-right"></span>
                    </a>
                    <div>
                        data of 2a<br/>
                        data of 2a<br/>
                        data of 2a<br/>
                    </div>
                </li>
                <li>
                    <div class="ui-accordion-left"></div>
                    <a class="ui-accordion-link acc2">2b
                        <span class="ui-accordion-right"></span>
                    </a>
                    <div>
                        data of 2b<br/>
                        data of 2b<br/>
                        data of 2b<br/>
                    </div>
                </li>
            </ul>
        </div>
    </li>
    <li>
        <div class="ui-accordion-left"></div>
        <a class="ui-accordion-link acc1">1b
            <span class="ui-accordion-right"></span>
        </a>
        <div>
            data of 1b<br />
            data of 1b<br />
            dta of 1b <br />
        </div>
    </li>
</ul>

【问题讨论】:

    标签: jquery jquery-ui accordion


    【解决方案1】:

    只需更改 HTML 中元素的顺序,即可获得所需的行为。现在开始时只有 1a 和 1b 是开放的。同样,当您现在单击 1b 时,它将关闭 1a,这也将隐藏任何打开的 2a/2b 部分。

        $(document).ready(function() {
            $("#acc1").accordion({
                active:".ui-accordion-left",
                alwaysOpen: false,
                autoheight: false,
                header: 'a.acc1',
                clearStyle: true
            });
            $("#acc2").accordion({
                active:".ui-accordion-left",
                alwaysOpen: false,
                autoheight: false,
                header: 'a.acc2',
                clearStyle: true
            });
        });
    
        <ul id="acc1" class="ui-accordion-container">
            <li>
                <div class="ui-accordion-left">
                </div>
                <a class="ui-accordion-link acc1">1a
                    <span class="ui-accordion-right"></span>
                </a>
                <div>
                    data of 1a<br/>
                    data of 1a<br/>
                    data of 1a<br/>
                    <ul class="ui-accordion-container" id="acc2">
                        <li>
                            <div class="ui-accordion-left">
                            </div>
                            <a class="ui-accordion-link acc2">2a
                                <span class="ui-accordion-right"></span>
                            </a>
                            <div>
                                data of 2a<br/>
                                data of 2a<br/>
                                data of 2a<br/>
                            </div>
                        </li>
                        <li>
                            <div class="ui-accordion-left">
                            </div>
                            <a class="ui-accordion-link acc2">2b
                            <span class="ui-accordion-right"></span></a>
                            <div>
                                data of 2b<br/>
                                data of 2b<br/>
                                data of 2b<br/>
                            </div>
                        </li>
                    </ul>
                </div>
            </li>
            <li>
                <div class="ui-accordion-left"></div>
                <a class="ui-accordion-link acc1">1b
                <span class="ui-accordion-right"></span></a>
                <div>
                    data of 1b<br />
                    data of 1b<br />
                    dta of 1b <br />
                </div>
            </li>
        </ul>
    </body>
    

    【讨论】:

      猜你喜欢
      • 2014-06-25
      • 1970-01-01
      • 2011-05-01
      • 2023-03-04
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多