Jquery制作常用二级菜单导航
自己手动写一个常用的Jquery二级导航下拉菜单效果。
注意点:
1、鼠标到二级的时候要加个定时器来处理中间间隙问题;
2、鼠标进入和离开都要清楚定时器,不然会出现内存泄漏。
代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>常用二级菜单导航</title> <script> </script> <style> *{ margin: 0; padding: 0; } a{ text-decoration: none; } li{ list-style: none; } ul{ width: 400px; margin: 60px auto; } ul li{ position: relative; display: inline-block; } ul li > a{ padding: 4px 15px; font-size: 16px; color: #444; font-weight: bold; } .subnav{ display: none; position: absolute; left: 15px; top: 22px; width: 200px; } ul li.open .subnav{ display: block; } </style> </head> <body> <ul class="nav"> <li><a href="#">首页</a></li> <li> <a href="javascript:;" class="o">关于我们</a> <div class="subnav"> <p><a href="#">企业介绍</a></p> <p><a href="#">求职招聘</a></p> <p><a href="#">团队人员</a></p> </div> </li> <li> <a href="javascript:;" class="o">产品中心</a> <div class="subnav"> <p><a href="#">前端开发</a></p> <p><a href="#">php工程师</a></p> <p><a href="#">c++开发妹子</a></p> </div> </li> <li><a href="#">联系我们</a></li> </ul> </body> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script> $(document).ready(function(){ var o =null; $('.nav li .o').on('mouseover', function() { // 鼠标移动到a上面。给当前添加class var _that = this; var subli = $(_that).parents('li'); $('.nav>li').removeClass('open'); //清除原来li上面的class subli.addClass('open'); //添加当前class clearTimeout(o); //鼠标移动到另外的a上面需要清除上一个的定时器 });
$('.nav li .o,.nav li .subnav').on('mouseout', function() { //当鼠标移开a区域,由于有间隙bug。 //当鼠标离开二级目录区域,添加定时器隐藏当前li的class var _that = this; var subli = $(_that).parents('li'); o = setTimeout(function(){ subli.removeClass('open'); }, 100); }); $('.nav li .subnav').on('mouseover', function(e) { //当鼠标移动到二级目录清除上面的定时器。 clearTimeout(o); }); }); </script> </html>
效果