在Wordpress生成的表单中展开和折叠列表元素的奇怪问题

Strange issues with expanding and collapsing list elements in a Wordpress generated form

本文关键字:列表元素 折叠 问题 Wordpress 表单      更新时间:2023-09-26

我希望有人能告诉我A)是什么导致了当前的问题B)一个更优雅的解决方案对于以下问题:

我正在从Wordpress博客中提取所有页面,其想法是创建一个菜单,其中子导航随着用户交互而扩展和收缩。

嵌套菜单标记基本上如下:

<nav id="projects">
<ul class="menu">
    <li class="page_item page-item-249">
        <a href="...">Selected projects</a>
        <ul class="children">
            <li class="page_item page-item-298"><a href="..." >Level 2</a></li>
            <li class="page_item page-item-263"><a href="..." >Level 2</a></li>
            <li class="page_item page-item-212"><a href="..." >Level 2</a></li>
        </ul>
    </li>
    <li class="page_item page-item-238">
        <a href="...">Archive</a>
        <ul class="children">
            <li class="page_item page-item-33">
                <a href="...">Level 2</a>
                <ul class="children">
                    <li class="page_item page-item-46"><a href="...">Level 3</a></li>
                    <li class="page_item page-item-48"><a href="...">Level 3</a></li>
                </ul>
            </li>
            <li class="page_item page-item-35">
                <a href="...">Level 2</a>
                <ul class="children">
                    <li class="page_item page-item-52"><a href="...">Level 3</a></li>
                    <li class="page_item page-item-57"><a href="...">Level 3</a></li>
                    <li class="page_item page-item-59"><a href="...">Level 3</a></li>
                    <li class="page_item page-item-61"><a href="...">Level 3</a></li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

jQuery的设置如下:

$(".page_item a").click( function(){
    /* Set vars */
    var $this = $(this);
    var isActive = false;
    var hasSublinks = false;
    var nextLevel = $(this).next("ul");
    if ( $this.next().html() !== null ) {hasSublinks = true;}
    if ( $this.hasClass('active') ) {isActive = true;}
    if ( !hasSublinks ) {
        return true;
    } else {
        /* I have sub links... */
        if (!isActive) {
            /* I am not active */
            $(".active").removeClass("active");
            $(".children").slideUp();
            $(this).next("ul").slideDown();
            $(this).addClass('active');
        } else {
            $(nextLevel).slideUp();
            $(this).removeClass('active');
        }
        return false;
    }
});

当我点击'Archive'时,它会按预期展开它的子列表。然而,当我点击这里的链接时,我希望它向下滑动并显示下一关(第3关),但它的效果与向上滑动相反回到我开始的地方。

我花了很多时间在控制台,在Wordpress Codex上试图找出可能的问题,对我来说特别具有挑战性的是,这段代码之前是工作的(或似乎)。我知道代码不是最干净的,所以我真的希望能告诉我哪里出了问题!

谢谢

你似乎没有类活动的任何地方,所以当你这样做:

  if ( $this.hasClass('active') ) {isActive = true;}

将Active设置为false

所以你进入这部分代码:

if (!isActive) {
        /* I am not active */
        $(".active").removeClass("active");
        $(".children").slideUp();

你的逻辑显然有问题,试着修复它,如果你什么也找不到,我会给你提示