jQuery实现仿京东防抖动菜单效果示例


Posted in jQuery onJuly 06, 2018

本文实例讲述了jQuery实现仿京东防抖动菜单效果。分享给大家供大家参考,具体如下:

完整代码:

<!DOCTYPE html>
<html>
<head>
<title>3water.com jQuery仿京东菜单</title>
<meta charset="utf-8">
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<style type="text/css">
*{
  padding: 0;
  margin: 0;
}
li{
  list-style: none;
}
a{
  color:#555;
}
.menu{
  width: 220px;
  border: 2px solid #333;
  position: relative;
}
.menu_item{
  height: 47px;
  padding-left:20px;
  line-height: 47px;
  background-color:#feebf3;
  border-bottom: 1px solid #f0bfd3;
}
.menu_item.current{
  background-color: #fff;
}
.menu_cont{
  position: absolute;
  width: 500px;
  height: 150px;
  top: 0;
  left: 220px;
  padding: 15px;
  border: 1px solid #666;
}
</style>
</head>
<body>
<h2>防抖动</h2>
<div class="menu">
  <ul class="menu_list">
    <li class="menu_item"><a href="">热点要闻</a></li>
    <li class="menu_item"><a href="">个性推荐</a></li>
    <li class="menu_item"><a href="">北京新闻</a></li>
    <li class="menu_item"><a href="">环球视野</a></li>
  </ul>
  <div class="menu_cont" style="display:none">
    <div class="menu_cont_list">
      <ul>
        <li>
          <h3><a href="">618,刘强东笑了,很多人哭了</a></h3>
        </li>
        <li>
          <h3><a href="">普通人如何分享人民币增值红利</a></h3>
        </li>
        <li>
          <h3><a href="">大都市里藏板房小学闷热无比 </a></h3>
        </li>
      </ul>
    </div>
    <div class="menu_cont_list">
      <ul>
        <li>
          <h3><a href="">中国炼油产能过剩超亿吨 油价迫近4元降回到十年前</a></h3>
        </li>
        <li>
          <h3><a href="">银行大幅上调首套房贷利率 这些人最受影响</a></h3>
        </li>
        <li>
          <h3><a href="">江南大范围强降雨再次来袭 今明北方旱区多雷阵雨</a></h3>
        </li>
      </ul>
    </div>
    <div class="menu_cont_list">
      <ul>
        <li>
          <h3><a href="">京郊特产组团进超市 类似活动将在全市推开</a></h3>
        </li>
        <li>
          <h3><a href="">北京某高档小区地下二层防空洞改群租房</a></h3>
        </li>
        <li>
          <h3><a href="">北京市民踊跃收听收看市党代会开幕直播</a></h3>
        </li>
      </ul>
    </div>
    <div class="menu_cont_list">
      <ul>
        <li>
          <h3><a href="">英国推出“钱味香水”:随时感受钞票味儿</a></h3>
        </li>
        <li>
          <h3><a href="">美国是如何买下阿拉斯加的?为何俄国悔不当初?</a></h3>
        </li>
        <li>
          <h3><a href="">将增近4000人,美国为何欲大幅增兵阿富汗?</a></h3>
        </li>
      </ul>
    </div>
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){
  var $menu = $(".menu");
  var $menuItem = $(".menu_item");
  var $menuCont = $(".menu_cont");
  var $menuContList= $(".menu_cont_list")
  var menuTimer;
  $menuItem.on("mouseenter", function(){
    var self = $(this);
    menuTimer = setTimeout(function(){
      self.addClass("current");
      self.siblings().removeClass("current");
      $menuCont.show();
      var _index = self.index();
      $menuContList.eq(_index).show();
      $menuContList.eq(_index).siblings().hide();
    },500)
  }).on("mouseleave", function(){
    if(menuTimer){
      clearTimeout(menuTimer);
    }
  })
  $menu.on("mouseleave", function(){
    $menuCont.hide();
  })
})
</script>
</body>
</html>

使用本站HTML/CSS/JS在线运行测试工具:http://tools.3water.com/code/HtmlJsRun,可得到如下测试运行效果:

jQuery实现仿京东防抖动菜单效果示例

问题:鼠标第一次移入的时候是不需要延迟的,所以加入了mouseFlag

优化后的JS为

$(function(){
  var _catTimer;
  var _mouseflag;
  var $menu = $("#menu");
  var $menuItem = $menu.find(".menu_list").children("li");//菜单
  var $menuCont = $menu.find(".menu_cont");//容器
  var $menuContItem = $menuCont.children("div");//
  $menuCont.hide();//默认隐藏容器窗口
  $menuItem.on("mouseenter", function(){
    var self = $(this);
    if(!_mouseflag){
      showCont(self);
      _mouseflag = true;
    }else{
      _catTimer = setTimeout(function(){
        showCont(self)
      },300)
    }
  }).on("mouseleave", function(){
    if(_catTimer){
      clearTimeout(_catTimer);
    }
  })
  $menu.on("mouseleave",function(){
    $menuCont.hide();
    $menuItem.removeClass("current");
  })
  var showCont = function (self) {
    self.addClass("current");
    self.siblings().removeClass("current");
    $menuCont.show();//显示容器窗口
    var _index = self.index();//获取位置
    $menuContItem.eq(_index).show();
    $menuContItem.eq(_index).siblings().hide();
  }
})

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
jQuery 利用ztree实现树形表格的实例代码
Sep 27 jQuery
jQuery替换节点元素的操作方法
Mar 18 jQuery
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 jQuery
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
jQuery中使用validate插件校验表单功能
May 24 jQuery
jquery实现掷骰子小游戏
Oct 24 jQuery
如何使用jQuery操作Cookies方法解析
Sep 08 jQuery
jquery实现抽奖功能
Oct 22 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 #jQuery
jQuery实现炫丽的3d旋转星空效果
Jul 04 #jQuery
jQuery实现table表格checkbox全选的方法分析
Jul 04 #jQuery
jQuery实现表单动态添加与删除数据操作示例
Jul 03 #jQuery
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 #jQuery
jQuery阻止事件冒泡实例分析
Jul 03 #jQuery
jQuery实现模糊搜索功能的方法分析
Jun 29 #jQuery
You might like
php执行sql语句的写法
2009/03/10 PHP
基于php权限分配的实现代码
2013/04/28 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
vue如何判断dom的class
2018/04/26 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
python 文件和路径操作函数小结
2009/11/23 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
Python日期的加减等操作的示例
2017/08/15 Python
python虚拟环境的安装配置图文教程
2017/10/20 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
应届毕业生个人自荐信范文
2013/11/30 职场文书
办公室副主任职责范本
2014/03/08 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
党员领导干部承诺书
2014/05/28 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
材料员岗位职责
2015/02/10 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书