ClearTimeout消除闪动实例代码


Posted in Javascript onFebruary 29, 2016

定义和用法

clearTimeout() 方法可取消由 setTimeout() 方法设置的 timeout。

语法

clearTimeout(id_of_settimeout)

参数 描述
id_of_settimeout 由 setTimeout() 返回的 ID 值。该值标识要取消的延迟执行代码块。

需求:当鼠标放到父级菜单上面的时候,显示下方的子菜单。鼠标从子菜单或者父级菜单上面移开的时候,子菜单要收起来。最终效果如下:

ClearTimeout消除闪动实例代码

PS:这样需求很常见,最常见的做法是li元素下面再嵌套一个Ul元素来包含子元素。这种做法用css就可以完全控制。但今天这个子菜单和导航栏是分开的。即到鼠标到产品上面的时候显示header-tags块。

<ul class="header-nav">
<li class="nav-item home"><a href="@Url.Action("Index", "Home")">首页</a></li>
<li class="nav-item products" id="header_tags">
<a href="#">产品<span class="icon-caret-down"></span></a>
....
</li>
</ul>
<div class="header-tags">
<ul>
<li>
<img class="screening-img-normal" src="~/Content/static/all.png">
<img class="screening-img-hover" src="~/Content/static/all1.png">
<p>全部</p>
</li>
<li tagid="4">
<img class="screening-img-normal" src="~/Content/static/shafa.png">
<img class="screening-img-hover" src="~/Content/static/shafa1.png">
<p>沙发</p>
</li>
<li tagid="3">
<img class="screening-img-normal" src="~/Content/static/zuoyi.png">
<img class="screening-img-hover" src="~/Content/static/zuoyi1.png">
<p>座椅</p>
</li>
....
</div>

这无法用css完全控制(hover只能控制子元素或兄弟元素)。

/*父子*/
#a:hover #b{display: block} 
/*兄弟*/
#a:hover + #b{display: block}

上面的情况就要用脚本了。这里涉及到#header_tags和.header-tags两个元素的移入移出。当鼠标移入#header_tags,.header-tags显示,当鼠标再移入.header-tags的时候不能立即触发#header_tags的moveout事件,而要保持tags继续显示。只有到鼠标从#header_tags和.header-tags离开后没有再进入才会把子菜单收起来。

$(function () {
var tagsTime;
$(document).on('mouseover mouseout', '#header_tags', function(event){
var $headerTagsBox = $('.header-tags');
if (event.type == 'mouseover') {
clearTimeout(tagsTime);
$headerTagsBox.slideDown(300);
}
else if (event.type == 'mouseout') {
tagsTime = setTimeout(function(){
$headerTagsBox.slideUp(200);
}, 200);
}
});
$('.header-tags').hover(function(){
clearTimeout(tagsTime);
},function(){
var $me = $(this);
tagsTime = setTimeout(function(){
$me.slideUp(200);
}, 200);
}); });

如果这里没有清除定时器和加上延时执行,导航栏就会不断的闪动。根本无法点击。

Javascript 相关文章推荐
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
Knockoutjs 学习系列(二)花式捆绑
Jun 07 Javascript
关于Javascript回调函数的一个妙用
Aug 29 Javascript
Ajax使用原生态JS验证用户名是否存在
May 26 Javascript
浅析jQuery操作select控件的取值和设值
Dec 07 Javascript
jQuery实现简单的手风琴效果
Apr 17 jQuery
Angularjs按需查询实例代码
Oct 30 Javascript
vue router+vuex实现首页登录验证判断逻辑
May 17 Javascript
element vue Array数组和Map对象的添加与删除操作
Nov 14 Javascript
vue+axios实现post文件下载
Sep 25 Javascript
vuex的数据渲染与修改浅析
Nov 26 Vue.js
详解实现vue的数据响应式原理
Jan 20 Vue.js
JavaScript实现点击按钮字体放大、缩小
Feb 29 #Javascript
jquery trigger函数执行两次的解决方法
Feb 29 #Javascript
理解js回收机制通俗易懂版
Feb 29 #Javascript
jquery trigger实现联动的方法
Feb 29 #Javascript
基于Javascript实现返回顶部按钮
Feb 29 #Javascript
JavaScript实现斗地主游戏的思路
Feb 29 #Javascript
jQuery取消特定的click事件
Feb 29 #Javascript
You might like
第1次亲密接触PHP5(2)
2006/10/09 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
js中eval详解
2012/03/30 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
跟老齐学Python之重回函数
2014/10/10 Python
python实现发送邮件及附件功能
2021/03/02 Python
Python 闭包的使用方法
2017/09/07 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
python使用epoll实现服务端的方法
2018/10/16 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
python中wx模块的具体使用方法
2020/05/15 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
网络安全方面的面试题
2016/01/07 面试题
总结表彰大会主持词
2014/03/26 职场文书
评先进个人材料
2014/12/29 职场文书
写给医院的感谢信
2015/01/22 职场文书
节约用电倡议书
2015/04/28 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书