我正在尝试设计类似以下的东西:
<ul class="top">
<li><a href="#">Menu1</a></li>
<li>
<a href="#">Menu2</a>
<ul class="sub">
<li><a href="#">SubMenu1</a></li>
<li>
<a href="#">SubMenu2</a>
<ul class="subsub">
<li><a href="#">SubSubMenu1</a></li>
<li><a href="#">SubSubMenu2</a></li>
</ul>
</li>
<li><a href="#">SubMenu3</a></li>
</ul>
</li>
<li><a href="#">Menu3</a></li>
</ul>
我的想法是,如果节点有子节点,则子菜单将打开。因此,在这种情况下,如果用户将鼠标悬停在Menu2上,则SubMenu1、SubMenu2和SubMenu3将出现,如果用户将鼠标悬停在SubMenu2上,则SubSubMenu1和SubSubMenu2将出现。
目前我有以下jQuery:
$(document).ready(function () {
$("ul.top li").hover(function () { //When trigger is hovered...
if ($("ul.top li").hasClass("sub")) {
$(this).parent().find("ul.sub").slideDown('fast').show();
$(this).parent().hover(function () {}, function () {
$(this).parent().find("ul.sub").slideUp('slow');
});
}
});
});
然而,当我悬停在菜单1上时,菜单2的子菜单仍然会打开。
非常感谢您的帮助!
$(this).parent().find()
而不是$this.find()
吗?因为前者会一直向上寻找,直到顶端然后下来搜索 ul.sub。 - dash