我有一个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项的子菜单。我完全迷失了。任何帮助将不胜感激。
答案 0 :(得分:1)
首先,似乎你没有函数复制了jquery,所以这不是问题所在:
nav.find( “里”)。每个(的功能(){强>
我认为问题是,你走得很深,所以试试这个:
$(this).find(">ul")
或者这个:
$(this).children("ul")
来自jQuery:
.children()
方法与.find()
的不同之处在于.children()
只在DOM树中向下移动一个级别,而.find()
可以遍历多个级别以选择后代元素(孙子等等)。 )以及。