基于jquery实现多级菜单效果


Posted in jQuery onJuly 25, 2017

本文实例为大家分享了jquery实现多级菜单效果展示的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style>
  *{
   margin:0;
   padding:0;
   font-size:14px;
  }
  ul,li{
   list-style:none;
  }
  .box{
   margin:10px;
   padding:10px;
   width:300px;
   border:1px dashed #008000;
   /*渐进增强:首先设置一个纯色的背景,对于不兼容css3的浏览器来说会使用纯色,对于兼容的浏览器,我们在下面在额外的增加一些渐变色,这样会覆盖掉上面*/
   background:#ffe470;
   background:-webkit-linear-gradient(top left,#2b93d2,#fa5889,#cde074,#ffe470);
   background:-moz-linear-gradient(top left,#2b93d2,#fa5889,#cde074,#ffe470);
   background:-o-linear-gradient(top left,#2b93d2,#fa5889,#cde074,#ffe470);
   background:linear-gradient(top left,#2b93d2,#fa5889,#cde074,#ffe470);
  }
  .box li{
   position:relative;
   line-height:30px;
  }
  .box em{
   position:absolute;
   top:7px;
   left:0;
   width:16px;
   height:16px;
   background:url("img/icon.png") no-repeat -59px -28px;
   cursor:pointer;

  }
  .box span{
   display:block;
   padding-left:20px;
  }
  .box em.open{
   background-position:-42px -28px;
  }
  .box .two{
   margin-left:20px;
  }
  .box .three{
   margin-left:40px;
  }
  .box .four{
   margin-left:60px;
  }
  .box .two,.box .three,.box .four{
   display:none;
  }
 </style>
</head>
<body>
 <div class='box' id='box'>
  <ul>
   <li>
    <em></em>
    <span>第一级第一个</span>
    <ul class='two'>
     <li><span>第二级第一个</span></li>
     <li>
      <em></em><span>第二级第二个</span>
      <ul class='three'>
       <li><span>第三极第一个</span></li>
       <li><span>第三极第二个</span></li>
       <li>
        <em></em><span>第三极第三个</span>
        <ul class='four'>
         <li><span>第四级第一个</span></li>
         <li><span>第四级第二个</span></li>
         <li><span>第四级第三个</span></li>
        </ul>
       </li>
      </ul>
     </li>
     <li>
      <em></em><span>第二级第三个</span>
      <ul class='three'>
       <li><span>第三级第一个</span></li>
       <li><span>第三级第二个</span></li>
       <li><span>第三级第三个</span></li>
      </ul>
     </li>
    </ul>
   </li>
  </ul>
  <ul>
   <li>
    <em></em>
    <span>第一级第一个</span>
    <ul class='two'>
     <li><span>第二级第一个</span></li>
     <li>
      <em></em><span>第二级第二个</span>
      <ul class='three'>
       <li><span>第三极第一个</span></li>
       <li><span>第三极第二个</span></li>
       <li>
        <em></em><span>第三极第三个</span>
        <ul class='four'>
         <li><span>第四级第一个</span></li>
         <li><span>第四级第二个</span></li>
         <li><span>第四级第三个</span></li>
        </ul>
       </li>
      </ul>
     </li>
     <li>
      <em></em><span>第二级第三个</span>
      <ul class='three'>
       <li><span>第三级第一个</span></li>
       <li><span>第三级第二个</span></li>
       <li><span>第三级第三个</span></li>
      </ul>
     </li>
    </ul>
   </li>
  </ul>
 </div>

 <script>
  var $box = $('#box');
  $box.find("span").each(function(index,item){
   var $pre = $(this).prev();
   if($pre[0] && $pre[0].tagName.toLowerCase()==="em"){
    $(this).css("cursor","pointer");
   }
  })
  //jQuery里面除了bind、unbind、on、off、click这些绑定事件的方式外,还提供了一种delegate(1.7版本以前用的是live)

  function fn(){
   var $par = $(this).parent();
   var $ul = $($par.children('ul')[0]);
   var $em = $($par.children('em')[0]);
   if($ul.length>0){
    
    $ul.toggle();
    $em.toggleClass("open");
    var isBlock = $ul.css('display')==="block"?true:false;
    //如果当前的是收缩的话,我们需要把子子孙孙中所有的ul/em都隐藏和移除open样式
    if(isBlock){
     $par.find('ul').css("display","none");
     $par.find("em").removeClass("open");
    }
   }
  }

  $box.delegate('em',"click",fn)//给$box绑定点击事件,如果当前的事件源是em的话,我们执行fn
  $box.delegate('span',"click",fn)//给$box绑定点击事件,如果当前的事件源是em的话,我们执行fn
 </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
jquery.masonry瀑布流效果
May 25 jQuery
jQuery实现菜单栏导航效果
Aug 15 jQuery
认识jQuery的Promise的具体使用方法
Oct 10 jQuery
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
Dec 24 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
jQuery常见的遍历DOM操作详解
Sep 05 jQuery
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
jQuery实现动态加载瀑布流
Sep 01 jQuery
jQuery实现拼图小游戏(实例讲解)
Jul 24 #jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 #jQuery
jQuery.Ajax()的data参数类型详解
Jul 23 #jQuery
JavaScript之事件委托实例(附原生js和jQuery代码)
Jul 22 #jQuery
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
Jul 22 #jQuery
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
Jul 22 #jQuery
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 #jQuery
You might like
PHP重定向的3种方式
2013/03/07 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
python实现ping的方法
2015/07/06 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
浅析python协程相关概念
2018/01/20 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
五十岁生日宴会答谢词
2014/01/15 职场文书
工作室成员个人发展规划范文
2014/01/24 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android