基于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插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
jQuery实现简单的手风琴效果
Apr 17 jQuery
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
jquery 一键复制到剪切板的实例
Sep 20 jQuery
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
JQuery中queue方法用法示例
Jan 31 jQuery
jQuery实时统计输入框字数及限制
Jun 24 jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 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
DISCUZ 分页代码
2007/01/02 PHP
php 全局变量范围分析
2009/08/07 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
2013/12/27 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
python访问系统环境变量的方法
2015/04/29 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
python+logging+yaml实现日志分割
2019/07/22 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
《猴子种果树》教学反思
2014/04/26 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
企业人事任命书
2014/06/05 职场文书
老干部工作先进事迹
2014/08/17 职场文书
导航工程专业自荐信
2014/09/02 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
党员转正申请报告
2015/05/15 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Python字典的基础操作
2021/11/01 Python