0

3 つのレベルを持つ 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 に答える