基于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判断邮箱格式对错实例代码讲解
Apr 12 jQuery
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
用户管理的设计_jquery的ajax实现二级联动效果
Jul 13 jQuery
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 jQuery
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
jQuery操作动画完整实例分析
Jan 10 jQuery
jQuery操作选中select下拉框的值代码实例
Feb 07 jQuery
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 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在线生成ico文件的代码
2007/10/09 PHP
PHP 简单数组排序实现代码
2009/08/05 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
用实例说明python的*args和**kwargs用法
2013/11/01 Python
使用python实现生成用户信息
2017/03/20 Python
python生成圆形图片的方法
2020/03/25 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
基于Python的PIL库学习详解
2019/05/10 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
抄作业检讨书
2014/02/17 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
冬季安全检查方案
2014/05/23 职场文书
模具专业自荐信
2014/05/29 职场文书
精神文明建设标语
2014/06/16 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
工厂见习报告范文
2014/10/31 职场文书
《法国号》教学反思
2016/02/22 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
javascript之Object.assign()的痛点分析
2022/03/03 Javascript