基于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 Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
jQuery常用选择器详解
Jul 17 jQuery
简单实现jQuery手风琴效果
Aug 18 jQuery
jQuery中过滤器的基本用法示例
Oct 11 jQuery
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 jQuery
js/jQuery实现全选效果
Jun 17 jQuery
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
JQuery常用简单动画操作方法回顾与总结
Dec 07 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP 文件缓存的性能测试
2010/04/25 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
Vue配置marked链接添加target=&quot;_blank&quot;的方法
2019/07/19 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
numpy中的高维数组转置实例
2018/04/17 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
keras之权重初始化方式
2020/05/21 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Collection和Collections的区别
2016/05/02 面试题
编辑个人求职信范文
2013/09/21 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android