一.按照惯例,先上DOM结构

  1. <div id="menu"> 
  2.             <ul> 
  3.                 <li> 
  4.                     <a href="#nogo">主菜单一</a> 
  5.                     <ul> 
  6.                         <li><a href="http://usual.blog.51cto.com">子菜单一</a></li> 
  7.                         <li><a href="http://usual.blog.51cto.com">子菜单一</a></li> 
  8.                         <li><a href="http://usual.blog.51cto.com">子菜单一</a></li> 
  9.                         <li><a href="http://usual.blog.51cto.com">子菜单一</a></li> 
  10.                     </ul> 
  11.                 </li> 
  12.  
  13.                 <li> 
  14.                     <a href="#nogo">主菜单二</a> 
  15.                     <ul> 
  16.                         <li><a href="http://usual.blog.51cto.com">子菜单二</a></li> 
  17.                         <li><a href="http://usual.blog.51cto.com">子菜单二</a></li> 
  18.                         <li><a href="http://usual.blog.51cto.com">子菜单二</a></li> 
  19.                         <li><a href="http://usual.blog.51cto.com">子菜单二</a></li> 
  20.                     </ul> 
  21.                 </li> 
  22.  
  23.                 <li> 
  24.                     <a href="#nogo">主菜单三</a> 
  25.                     <ul> 
  26.                         <li><a href="http://usual.blog.51cto.com">子菜单三</a></li> 
  27.                         <li><a href="http://usual.blog.51cto.com">子菜单三</a></li> 
  28.                         <li><a href="http://usual.blog.51cto.com">子菜单三</a></li> 
  29.                         <li><a href="http://usual.blog.51cto.com">子菜单三</a></li> 
  30.                     </ul> 
  31.                 </li> 
  32.  
  33.                 <li> 
  34.                     <a href="#nogo">主菜单四</a> 
  35.                     <ul> 
  36.                         <li><a href="http://usual.blog.51cto.com">子菜单四</a></li> 
  37.                         <li><a href="http://usual.blog.51cto.com">子菜单四</a></li> 
  38.                         <li><a href="http://usual.blog.51cto.com">子菜单四</a></li> 
  39.                         <li><a href="http://usual.blog.51cto.com">子菜单四</a></li> 
  40.                     </ul> 
  41.                 </li> 
  42.              
  43.             </ul> 
  44.          
  45.          
  46.         </div> 

二.有了DOM结构,再确定样式

  1. #menu{ 
  2.                 font-family:Helvetica; 
  3.             } 
  4.             #menu ul{ 
  5.                 list-style:none; 
  6.                 margin:0px; 
  7.                 padding:0px; 
  8.                 width:250px; 
  9.             } 
  10.             #menu ul li{ 
  11.                 margin:1px 0px; 
  12.                 padding:0px; 
  13.                  
  14.             } 
  15.             #menu ul li a{ 
  16.                 height:30px; 
  17.                 line-height:30px; 
  18.                 padding-left:10px; 
  19.                 display:block; 
  20.                 text-decoration:none; 
  21.                 font-weight:bold; 
  22.                 color:#333; 
  23.                 font-size:16px; 
  24.                 border:1px solid #ccc; 
  25.             } 
  26.             #menu ul li a:Hover{ 
  27.                 background:#a0b4dc; 
  28.             } 
  29.             #menu ul li li a{ 
  30.                 border:none; 
  31.                 height:25px; 
  32.                 line-height:25px; 
  33.             } 
  34.             #menu ul li li a:hover{ 
  35.                 background:yellow; 
  36.             } 
  37.             #menu ul li ul{ 
  38.                 display:none; 
  39.             } 

三.然后就是最重要的JQUERY部分了

 

  1. (function($){ 
  2.     $.fn.slideMenu=function(){ 
  3.         return this.each(function(){ 
  4.             var menu=$(this); 
  5.             menu.find("ul li>a").bind("click",function(event){ 
  6.                 var currentLink=$(event.currentTarget); 
  7.                 if(currentLink.parent().find("ul.active").size()==1){       //如果被点击的连接的子菜单已经显示了,就隐藏该子菜单 
  8.                     hide(currentLink); 
  9.                  
  10.                 } 
  11.                 else if(menu.find("ul li ul.active").size()==0){            //如果所有的子菜单都没有显示,则显示点击的子菜单 
  12.                      
  13.                     show(currentLink); 
  14.                  
  15.                 } 
  16.                 else{                                                       //显示点击的子菜单,隐藏已显示的子菜单 
  17.                     menu.find("ul li ul.active").slideUp("medium",function(){ 
  18.                      
  19.                         menu.find("ul li ul").removeClass("active"); 
  20.                         show(currentLink); 
  21.                      
  22.                     }); 
  23.                 } 
  24.  
  25.  
  26.  
  27.             }); 
  28.             var show=function(currentLink){                                 //显示子菜单方法 
  29.                 currentLink.parent().find("ul").addClass("active"); 
  30.                 currentLink.parent().find("ul").slideDown("medium"); 
  31.              
  32.             } 
  33.  
  34.             var hide=function(currentLink){                                 //隐藏子菜单方法 
  35.                 currentLink.parent().find("ul").removeClass("active"); 
  36.                 currentLink.parent().find("ul").slideUp("medium"); 
  37.              
  38.             } 
  39.         }); 
  40.     } 
  41.  
  42.  
  43. })(jQuery); 

四.引用。

  1. $(document).ready(function(){ 
  2.         $("#menu").slideMenu(); 
  3.      })