0

我们已经创建了一个具有三个级别的 jQuery 手风琴。

一切都很好,除了当你打开一个 2 级项目时,所有其他 2 级项目都在关闭。我们必须改变什么才能只影响 1 级项目?

我们的 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>

我们的 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);
    });

    }
});
4

1 回答 1

0

通过更改修复:

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

到:

parents = $(this).parent().parents().children("ul");
于 2013-02-05T14:01:27.880 回答