jquery导航总是打开第一个选项

时间:2013-11-06 12:13:18

标签: javascript jquery html mouseevent mouseenter

我有一个nav元素,如下所示:

<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项的子菜单。我完全迷失了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,似乎你没有函数复制了jquery,所以这不是问题所在:

nav.find( “里”)。每个(的功能(){

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

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

或者这个:

$(this).children("ul")

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