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实现简单的tab框实例
Aug 22 jQuery
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
JQuery元素快速查找与操作
Apr 22 jQuery
jQuery实现输入框的放大和缩小功能示例
Jul 21 jQuery
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
jQuery实现动态生成年月日级联下拉列表示例
May 11 jQuery
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
jquery使用echarts实现有向图可视化功能示例
Nov 25 jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 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中取得URL的根域名的代码
2011/03/23 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
实例讲解PHP表单
2020/06/10 PHP
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
python matplotlib库的基本使用
2020/09/23 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
团日活动总结范文
2014/04/25 职场文书
移交协议书
2014/08/19 职场文书
2014年设计师工作总结
2014/11/25 职场文书
埃及王子观后感
2015/06/16 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python