我编写了一个垂直菜单,当鼠标悬停在父级上时,会显示sub-items
。
HTML结构是:
<ul id="nav">
<li><a href="#">Continents</a>
<ul>
<li><a href="#">Europe</a>
<ul>
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</li>
<li><a href="#">Asia</a>
<ul>
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</li>
<li><a href="#">Africa</a>
<ul>
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Places</a>
<ul>
<li><a href="#">Place1</a></li>
<li><a href="#">Place2</a></li>
</ul>
</li>
<li><a href="#">Oceans</a>
<ul>
<li><a href="#">Pacific</a></li>
<li><a href="#">Atlantic</a></li>
</ul>
</li>
</ul>
最初只显示nav li
个元素。但是当用户在nav li a
上悬停时,会显示连续的子元素。当ul
元素下只有一个initial li
时,我成功完成了这项工作。但是[正如您在我上面的HTML结构中看到的],我需要第一个ul
分支中的第二个嵌套li
。
我的javascript代码是:
<script type="text/javascript">
$(document).ready(function () {
$('#nav > li > a').hover(function(){
if ($(this).attr('class') != 'active'){
$('#nav li ul').slideUp();
$(this).next().slideToggle();
$('#nav li a').removeClass('active');
$(this).addClass('active');
}
});
});
</script>
答案 0 :(得分:3)
您需要这种输出:http://jsfiddle.net/uNKvu/
$('#nav li').hover(function () {
$('> ul',this).slideToggle();
});