使用CSS的jQuery Vertical Slide Out菜单

时间:2013-01-20 08:18:30

标签: javascript jquery css drop-down-menu menu

我编写了一个垂直菜单,当鼠标悬停在父级上时,会显示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>

1 个答案:

答案 0 :(得分:3)

您需要这种输出:http://jsfiddle.net/uNKvu/

$('#nav li').hover(function () {
    $('> ul',this).slideToggle();
});