基于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源码】
May 13 jQuery
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
20个最常见的jQuery面试问题及答案
May 23 jQuery
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 jQuery
详解jQuery如何实现模糊搜索
May 10 jQuery
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
Jun 18 jQuery
jQuery zTree插件使用简单教程
Aug 16 jQuery
基于jquery ajax的多文件上传进度条过程解析
Sep 11 jQuery
Jquery如何使用animation动画效果改变背景色的代码
Jul 20 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 异常处理实现代码
2009/03/10 PHP
php常用文件操作函数汇总
2014/11/22 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
php把数组值转换成键的方法
2015/07/13 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
js下用eval生成JSON对象
2010/09/17 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
20个实用的JavaScript技巧分享
2014/11/28 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python版的文曲星猜数字游戏代码
2013/09/02 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
微观物理专业自荐信
2014/01/26 职场文书
学前教育专业求职信
2014/09/02 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers