一.按照惯例,先上DOM结构
<div id="menu"> <ul> <li> <a href="#nogo">主菜单一</a> <ul> <li><a href="http://usual.blog.51cto.com">子菜单一</a></li> <li><a href="http://usual.blog.51cto.com">子菜单一</a></li> <li><a href="http://usual.blog.51cto.com">子菜单一</a></li> <li><a href="http://usual.blog.51cto.com">子菜单一</a></li> </ul> </li> <li> <a href="#nogo">主菜单二</a> <ul> <li><a href="http://usual.blog.51cto.com">子菜单二</a></li> <li><a href="http://usual.blog.51cto.com">子菜单二</a></li> <li><a href="http://usual.blog.51cto.com">子菜单二</a></li> <li><a href="http://usual.blog.51cto.com">子菜单二</a></li> </ul> </li> <li> <a href="#nogo">主菜单三</a> <ul> <li><a href="http://usual.blog.51cto.com">子菜单三</a></li> <li><a href="http://usual.blog.51cto.com">子菜单三</a></li> <li><a href="http://usual.blog.51cto.com">子菜单三</a></li> <li><a href="http://usual.blog.51cto.com">子菜单三</a></li> </ul> </li> <li> <a href="#nogo">主菜单四</a> <ul> <li><a href="http://usual.blog.51cto.com">子菜单四</a></li> <li><a href="http://usual.blog.51cto.com">子菜单四</a></li> <li><a href="http://usual.blog.51cto.com">子菜单四</a></li> <li><a href="http://usual.blog.51cto.com">子菜单四</a></li> </ul> </li> </ul> </div>
二.有了DOM结构,再确定样式
#menu{ font-family:Helvetica; } #menu ul{ list-style:none; margin:0px; padding:0px; width:250px; } #menu ul li{ margin:1px 0px; padding:0px; } #menu ul li a{ height:30px; line-height:30px; padding-left:10px; display:block; text-decoration:none; font-weight:bold; color:#333; font-size:16px; border:1px solid #ccc; } #menu ul li a:Hover{ background:#a0b4dc; } #menu ul li li a{ border:none; height:25px; line-height:25px; } #menu ul li li a:hover{ background:yellow; } #menu ul li ul{ display:none; }
三.然后就是最重要的JQUERY部分了
(function($){ $.fn.slideMenu=function(){ return this.each(function(){ var menu=$(this); menu.find("ul li>a").bind("click",function(event){ var currentLink=$(event.currentTarget); if(currentLink.parent().find("ul.active").size()==1){ //如果被点击的连接的子菜单已经显示了,就隐藏该子菜单 hide(currentLink); } else if(menu.find("ul li ul.active").size()==0){ //如果所有的子菜单都没有显示,则显示点击的子菜单 show(currentLink); } else{ //显示点击的子菜单,隐藏已显示的子菜单 menu.find("ul li ul.active").slideUp("medium",function(){ menu.find("ul li ul").removeClass("active"); show(currentLink); }); } }); var show=function(currentLink){ //显示子菜单方法 currentLink.parent().find("ul").addClass("active"); currentLink.parent().find("ul").slideDown("medium"); } var hide=function(currentLink){ //隐藏子菜单方法 currentLink.parent().find("ul").removeClass("active"); currentLink.parent().find("ul").slideUp("medium"); } }); } })(jQuery);
四.引用。
$(document).ready(function(){
$("#menu").slideMenu();
})