简体   繁体   English

具有三个级别的jQuery手风琴

[英]jQuery accordion with three levels

We have created a jQuery accordion with three levels. 我们创建了一个具有三个级别的jQuery手风琴。

Everything goes fine except, when you open a level 2 item, all other level 2 items are closing. 一切正常,除了当您打开一个2级项目时,所有其他2级项目都将关闭。 What do we have to change to only let affect this on the level 1 items? 我们必须更改哪些内容才能仅影响1级物品?

Our HTML markup is as follow: 我们的HTML标记如下:

<ul>
    <li><a href="#">Level 1</a>
        <ul>
            <li><a href="#">Level 2</a>
                <ul>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                </ul>
            </li>
            <li><a href="#">Level 2</a>
                <ul>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                </ul>
            </li>
            <li><a href="#">Level 2</a>
                <ul>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                </ul>
            </li>
        </ul>
    </li>
    <li><a href="#">Level 1</a>
        <ul>
            <li><a href="#">Level 2</a>
                <ul>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                </ul>
            </li>
            <li><a href="#">Level 2</a>
                <ul>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                </ul>
            </li>
            <li><a href="#">Level 2</a>
                <ul>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                    <li><a href="#">Level 3</a></li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

And our jQuery markup is as follow: 我们的jQuery标记如下:

$this.find("li a").click(function() {
    if($(this).parent().find("ul").size() != 0){
        if(opts.accordion){
            //Do nothing when the list is open
            if(!$(this).parent().find("ul").is(':visible')){
                parents = $(this).parent().parents("ul");
                visible = $this.find("ul:visible");
                visible.each(function(visibleIndex){
                    var close = true;
                    parents.each(function(parentIndex){
                        if(parents[parentIndex] == visible[visibleIndex]){
                            close = false;
                            return false;
                        }
                    });
                    if(close){
                        if($(this).parent().find("ul") != visible[visibleIndex]){
                            $(visible[visibleIndex]).slideUp(opts.speed, function(){
                                $(this).parent("li").find("span:first").html(opts.closedSign);
                            });                                     
                        }
                    }
                });
            }
        }

    $(this).parent().children("ul").slideDown(opts.speed, function(){
        $(this).parent("li").find("span:first").delay(opts.speed).html(opts.openedSign);
    });

    }
});

Fixed by changing: 通过更改固定:

parents = $(this).parent().parents("ul");

To: 至:

parents = $(this).parent().parents().children("ul");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM