jquery二级下拉菜单实例代码(鼠标悬停自动显示下拉菜单)

发布时间:2019-07-19编辑:脚本学堂
分享一个jquery二级下拉菜单代码,附有效果图,鼠标放上去就会自动显示下拉菜单,移开鼠标下拉菜单消失,感兴趣的朋友参考下。

jquery二级下拉菜单,效果:
jquery二级下拉菜单

鼠标放上去就会自动显示下拉菜单,鼠标移开当然下拉菜单不显示。

jquery下拉菜单布局结构
 

jquery二级下拉菜单

说明:
<li>标签下面的<ul>标签是隐藏的(display:none),鼠标放上<a>链接,就会修改<ul>的display属性,让其显示。
为了突出jquery的伟大之处,我讲一下用普通js+css实现这个效果的方法。

首先,定义一个父容器,相当于上面的<li>标签,在父容器中,定义两个子容器,一个是显示的,一个是隐藏的。特别注意一下:隐藏的子容器的位置position是设为absolute的,并且其父容器是position:relative的。

子容器绝对定位,跟以它最近的,以定位的父容器为参照物,否则,就是以body为参照物。详情请查看css中的定位知识。
在显示的子容器上添加俩个事件,链接的话有自带的a:hover事件,表示鼠标移上去。其他的话可以用onmouseover,onmouseout事件,触发时间则调用一个function,在function中修改那个隐藏的子容器的display属性,设为“block”。

小问题:
鼠标一开,那隐藏的子容器马上隐藏,这个不利于用户体验,正常的应该是等过500或600毫秒子容器再隐藏,所以还需要调用window.setTimeout和window.clearTimeout这两个函数。

1、js代码
 

复制代码 代码示例:
//显示
function showDiv(id){
if(t1){
window.clearTimeout(t1);
}
var div = document.getElementById(id);
div.style.display="block";
}
//隐藏
function closediv(id){
t1 = window.setTimeout(function (){
var div = document.getElementById(id);
div.style.display="none";
},300); 
}

2、jquery代码:
 

复制代码 代码示例:
$(function(){
$(".topli").hover(
//鼠标移上去,则show显示
function(){$(this).find('.subnav').show();},
//鼠标移开,则hide隐藏
function(){$(this).find('.subnav').hide()})
})

jquery hover方法:

hover中两个参数分别表示鼠标移上去调用的事件函数和鼠标移开的事件函数。

主要源代码:
 

复制代码 代码示例:
<link href="css/163css.css" type="text/css" rel="stylesheet">
<script src="http://code.jquery.com/jquery-latest.js" type=text/javascript></script>
<script type="text/javascript">
$(function(){
$(".topli").hover(function(){$(this).find('.subnav').show();},function(){$(this).find('.subnav').hide()})
})
</script>
</head>
<body>
<ul class="mainnav">
<li class="topli"><a class="topa" href="#">首页</a></li>
<li class="topli"><a class="topa" href="#">个人服务</a>
<ul class="subnav"> 
<li><a href="#">转账付款</a><a href="#">水电煤缴费</a><a href="#">返利商家</a><a href="#">账户管理</a></li>
</ul>
</li>
<li class="topli"><a class="topa" href="#">付款方式</a>
<ul class="subnav"> 
<li><a href="#">付款方式介绍</a><a href="#">合作伙伴</a><a href="#">付款方式推荐</a></li>
</ul>
</li>
<li class="topli"><a class="topa" href="#">安全中心</a>
<ul class="subnav"> 
<li><a href="#">账户管理</a><a href="#">水电煤缴费</a><a href="#">付款方式推荐</a></li>
</ul>
</li>
</ul>
</body>

css代码:
 

复制代码 代码示例:

/* CSS Document */
body,h1,h2,h3,h4,h5,h6,p,ul,ol,li,form,img,dl,dt,dd,table,th,td,blockquote,fieldset,div,strong,label,em{margin:0;padding:0;border:0;}
ul,ol,li{list-style:none;}
input,button{margin:0;font-size:12px;vertical-align:middle;}
body{font-size:12px;font-family:Arial, Helvetica, sans-serif; color:#333; margin:0 auto; }
table{border-collapse:collapse;border-spacing:0;}

a{color:#333;text-decoration:none;}
a:hover{color:#c00; text-decoration:underline;}

.mainnav{ width:960px; padding-top:20px; margin:0 auto; background:url(../images/bg01.gif) repeat-x left bottom; height:48px;}
.topli{ float:left; font-size:14px; position:relative; padding:0 50px; height:24px;}
.subnav{ width:140px; position:absolute; padding-top:12px; background:url(../images/arrow.gif) no-repeat left top; top:14px; display:none; left:5px; }
.subnav li{ text-align:center;border:1px solid #ccc; padding-top:4px; border-top:none; background:#fff; width:138px;float:left;}
.subnav li a{ height:28px; line-height:28px; display:block; width:100%; border-bottom:1px dashed #ccc; margin-bottom:-1px;}

用到的二张图片:
bg01.gif
arrow.gif