Here is my fiddle link有代码......我的问题是第一级下拉菜单有效,但第二级下拉菜单没有...当我把光标从光标移开时它不会消失元素并进入菜单中的第二项..
有什么问题?我的HTML如下所示
<div id="menu">
<ul class="topnav">
<li><a href="#">Live-Radio</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Profile</a></li>
<li><a href="#">Home</a></li>
<li>
<a href="#">Songs</a>
<ul class="subnav">
<li>
<a href="#">Sub Nav Link</a>
<ul class="subnav2">
<li><a href="#">Sub21a</a></li>
<li><a href="#">Sub22a</a></li>
</ul>
</li>
<li><a href="#">Sub Nav Link</a></li>
</ul>
</li>
</ul>
</div>
我希望这种html标记用于下拉。你可以查看链接中的详细代码.....这里有一些jquery,我认为它有问题(但不是它是什么)从代码中获取...
JS:
//for my second subnav menu
$(this).parent().find("ul.subnav").hover(function() {
$(this).find("li ul.subnav2").slideDown('fast').show(); //Drop down the subnav2 on hover
} , function () {
$(this).find("li ul.subnav2").slideUp('fast'); //Drop down the subnav2 on hover
});
答案 0 :(得分:2)
您只需要定位具有li
元素的.subnav2
作为孩子:
$(this).parent().find("ul.subnav").find('li ul.subnav2').parent().hover(function() {
$(this).children("ul.subnav2").slideDown('fast').show(); //Drop down the subnav2 on hover
} , function () {
$(this).children("ul.subnav2").slideUp('fast'); //Drop down the subnav2 on hover
});
演示:http://jsfiddle.net/ehNrE/14/
在旁注上,.parent().find(...)
与.siblings(...)
相同。如果删除标记名称,选择器的执行速度也会更快(保留标记名称的唯一原因是,如果您只需要选择某种标记类型,因为多个标记类型具有相同的类,或者您需要支持Internet Explorer 5.5)。
ul.subnav
会更改为.subnav
。