0

我有一个类似这样的导航元素:

<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>

并且处理向下和向上滑动的代码是:(导航是一个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 的子菜单。我完全迷失了。任何帮助,将不胜感激。

4

1 回答 1

1

首先,您似乎复制了没有该功能的 jquery,所以这不是问题:

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

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

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

或这个:

$(this).children("ul")

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

于 2013-11-06T14:30:49.327 回答