jQuery Navigation 始终打开第一个选项

jquery navigation always opens the first option

本文关键字:第一个 选项 Navigation jQuery      更新时间:2023-09-26

>我有一个像这样的导航元素:

<ul>
    <li name='first_item'>
        <ul>
            <li>item 1</li>
                <ul>
                    <li>item 1.1</li>
                    <li>item 1.2</li>
                </ul>
            <li>item 2</li>
        </ul>
    </li>
</ul>
<ul>
    <li>
        <ul>
            <li>item 3</li>
            <li>item 4</li>
        </ul>
    </li>
</ul>

处理向下和向上滑动的代码是:(nav 是一个 html 元素,是上面的父元素)

nav.find("li").each(
    if ($(this).find("ul").length > 0) {
    _callback = false;
    $("<span>").text("^").appendTo($(this).children(":first"));
         //show subnav on hover
         $(this).mouseenter(function() {
             $(this).find("ul").stop(true, true).slideDown();
     });
         //hide submenus on exit
         $(this).mouseleave(function() {
             $(this).find("ul").stop(true, true).slideUp();
     });
     }
 });

发生的情况是,当我将鼠标悬停在first_item上时,它会打开子菜单,并且在完成向下滑动后,它也将打开项目 1 的子菜单。我对此完全迷茫了。任何帮助将不胜感激。

首先,您似乎在没有函数的情况下复制了 jquery,所以这不是问题所在:

nav.find("li").each(function(){

我认为问题是,你旅行到深处,所以试试这个:

$(this).find(">ul")

或者这个:

$(this).children("ul")

来自jQuery:.children()方法与.find()的不同之处在于,.children()只沿着 DOM 树向下移动一个级别,而.find()可以向下遍历多个级别以选择后代元素(孙子等)。