如何使用jQuery创建多级下拉菜单?

时间:2011-05-16 07:42:45

标签: jquery

在我的网站中,我可以创建1级子菜单,但它正在运行。但是2级子菜单不起作用。请帮忙。

这是我的Html代码

<ul id="nav"> 
    <li><a href="#">Home</a></li> 
    <li><a href="#"> Menu2&nbsp; <img alt="" src="Images/warning.png" style=" border:0px;" /></a> 
        <ul id="subnav"> 
            <li><a href="#">SubMenu1</a></li>
                <ul>
                        <li><a href="#">Sub1Sub2menu1</a></li>
                        <li><a href="#">Sub1Sub2menu2</a></li>
                        <li><a href="#">Sub1Sub2menu3</a></li>
                </ul>
            <li><a href="#">SubMenu2</a></li> 
            <li><a href="#">SubMenu3</a></li> 
            <li><a href="#">SubMenu4</a></li>
            <li><a href="#">SubMenu5</a></li> 
            <li><a href="#">SubMenu6</a></li>
            <li><a href="#">SubMenu7</a></li> 
        </ul> 
    </li> 
    <li><a href="#">Menu3&nbsp; <img alt="" src="Images/warning.png" style=" border:0px;" /></a> 
    <ul> 
        <li><a href="#">Sub1Menu1</a></li> 
        <li><a href="#">Sub1Menu2</a></li> 
    </ul>           
    </li> 
    <li><a href="#">Menu4</a></li> 
    <li><a href="#">Menu5</a></li> 
</ul> 

这是我的CSS:

#nav 
{
    margin:0;  padding:0;  list-style:none; width:640px; height:37px;
}   

#nav li 
{
    float:right; display:block; width:124px; position:relative; z-index:500; text-decoration:none; 
}

#nav li a 
{
    display:block; height:37px; line-height:37px; text-decoration:none; color:#fff; text-align:center; color:#000;

}

#nav li a:hover 
{
    color:Green;
}

#nav a.selected 
{
    color:#000;
}

#nav ul 
{
    position:absolute; right:0; display:none; padding:0; list-style:none; background-color:#c5c9cc;  border: solid 1px #c5c9cc; 
    -moz-border-radius: 0 0 10px 10px; border-radius: 0 0  10px 10px;
}


#nav ul li 
{
    width:124px; float:right;
}

#nav ul ul
{
    width:124px; float:right; margin:0px 124px 0px 0px; display:block; border-radius: 10px 0  0 10px;
}

#nav ul a 
{
    display:block; height:30px; color:#000; line-height:30px; text-decoration:none;

}

#nav li ul ul {
margin:0px 124px 0 10px;
}


#nav ul a:hover 
{
    text-decoration:none;   
}

*html #nav ul 
{
    margin:0 0 0 -2px;
}

这是我的jQuery代码:

<script type="text/javascript">
        $(document).ready(function () {

            $('#nav li').hover(
                function () {
                    //show its submenu
                    $('ul', this).slideDown(200);
                    $('#subnav ul', this).css({ visibility: "hidden" });
                },
                function () {
                    //hide its submenu
                    $('ul', this).slideUp(200);
                }
            );

        $('#subnav').hover(
                function () {
                    //show its submenu
                    $('#subnav ul', this).css({ visibility: "visible" });
                    $('#subnav ul', this).slideDown(200);
                },
                function () {
                    //hide its submenu
                    $('#subnav ul', this).slideUp(200);
                }
             );
        });
    </script> 

2 个答案:

答案 0 :(得分:1)

好像你的第二级没有嵌套在第一级。它应该在第一级<li></li>

<li><a href="#">SubMenu1</a>
     <ul>
         <li><a href="#">Sub1Sub2menu1</a></li>
         <li><a href="#">Sub1Sub2menu2</a></li>
         <li><a href="#">Sub1Sub2menu3</a></li>
     </ul>
</li>

答案 1 :(得分:0)

试试这个HTML代码

<ul>
<li style="display: inline !important;"><a href="#">Home</a></li>
<li class="parent"><a href="#">Menu 1</a>
    <ul class="child">
        <li class="parent"><a href="#">Menu 1 child 1</a>
            <ul class="child">
                <li class="parent"><a href="#">sub child 1</a>
                    <ul class="child">
                        <li>sub child 1</li>
                        <li>sub child 1</li>
                        <li>sub child 1</li> 
                    </ul>
                </li>
                <li>sub child 1</li>
                <li>sub child 1</li>
            </ul>
        </li>
        <li class="parent">Menu 1 child 2
            <ul class="child">
              <li>sub child 1</li>
              <li>sub child 1</li>
              <li>sub child 1</li>
          </ul>
        </li>
        <li>Menu 1 child 3</li>
        <li>Menu 1 child 4</li>
  </ul>
</li>
<li><a href="#">Menu 2</a></li>

使用此HTML代码。您注意到<ul><li>是嵌套的。 复制jQuery代码。

jQuery(document).ready(function($){ 
    $( '.parent' ).hover( function(){
        $(this).find('ul.child').show();
        $(this).find('ul.child').find('ul.child').hide();
    }, function(){
        $(this).find('.child').hide();
        });
});

很抱歉,如果我添加css代码,我无法提交此评论。只需访问该网站了解更多信息..希望这会有所帮助。 http://nextopics.com/jquery-multi-level-menu/或参阅演示http://nextopics.com/others/dropdown-menu/