javascript - 使用 Jquery 的多级下拉菜单

标签 javascript jquery css menu drop-down-menu

我想使用 jQuery 设计一个多级菜单。 我已经写了一些代码。你可以看演示here 。 这一切都运行良好。但我想动态制作多级下拉菜单。

脚本

$('ul#menu > li').hover(function(){
    //$('#drop' , this).css('display','block');
     $('.drop' , this).delay(20).slideDown(200);
}, function(){
 $('.drop' , this).delay(20).slideUp(200);
});​

HTML

<ul id="menu">
    <li><a href="#">Home</a>
        <ul class="drop">
            <li><a href="#">About us</a></li>
            <li><a href="#">About us</a></li>
            <li><a href="#">About us</a></li>
            <li><a href="#">About us</a></li>
        </ul>
    </li>


    <li><a href="#">about</a>
        <ul class="drop">
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
        </ul>
    </li>

</ul>​

CSS

ul#menu
{
    margin:0;
    padding:0;
}
ul#menu > li
{
    list-style:none;
    float:left;
    margin:0;
    padding:0;
    position:relative;
}
ul#menu a
{
    text-decoration:none;
    color:#fff;
    background:red;
    display:block;
    padding:10px;
}
ul#menu > li ul.drop
{
    margin:0;
    padding:0;
    width:150px;
    position:absolute;
    display:none;
}
ul#menu > li ul.drop ul
{
    margin:0;
    padding:0;
    width:150px;
    position:absolute;
    display:none;
    left:150px;
    top:0;
}
ul#menu > li ul li
{
    margin:0;
    padding:0;
    list-style:none;
    position:relative;
}​

最佳答案

您需要稍微更改 jQuery 脚本以适应这样的多级菜单:

$('ul#menu li').hover(function(){
     $(this).children('ul').delay(20).slideDown(200);
}, function(){
     $(this).children('ul').delay(20).slideUp(200);
});

并像这样更改 html:

<ul id="menu">
    <li><a href="#">Home</a>
        <ul class="drop">
            <li><a href="#">About us</a></li>
            <li><a href="#">About us</a></li>
            <li><a href="#">About us</a></li>
            <li>
                <a href="#">About us</a>
                <ul>
                    <li><a href="#">Sub Item 1</a></li>
                    <li>
                        <a href="#">Sub Item 2</a>
                        <ul>
                            <li><a href="#">Sub item 3</a></li>
                            <li><a href="#">Sub item 4</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>


    <li><a href="#">about</a>
        <ul class="drop">
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
        </ul>
    </li>
</ul>

你的CSS没问题。 您可以在以下位置查看更新的多级代码:http://jsfiddle.net/297t6/

关于javascript - 使用 Jquery 的多级下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647297/

相关文章:

javascript - 屏幕外 div 不适用于 html2canvas

javascript - 如何用图像替换 "back to top"按钮并使其滑入/滑出页面而不是淡入/淡出

javascript - 如何合并由输入的 val 获取的 2 个对象

javascript - D3.js - 如何将连续域映射到具有比例的离散范围?

javascript - 固定导航栏,损坏的 Javascript

javascript - 带有翻转的jquery动画

CSS 帮助 : Image renders correctly in FF and Chrome, 不是 IE9

javascript - jQuery data() 不适用于全局

java - 我可以列出一个只有 Javascript/JQuery 的目录吗?

html - CSS 行间隙和列间隙一样吗?