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 相关文章推荐
使用JavaScript switch case 另类写法
Mar 14 Javascript
纯js网页画板(Graphics)类简介及实现代码
Dec 24 Javascript
Jquery实现带动画效果的经典二级导航菜单
Mar 22 Javascript
单元选择合并变色示例代码
May 26 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
jQuery插件开发汇总
May 15 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
Nov 08 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
scrapyd schedule.json setting 传入多个值问题
Aug 07 Javascript
JavaScript实现简单进度条效果
Mar 25 Javascript
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
使用php实现截取指定长度
2013/08/06 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
详解Vue之事件处理
2020/07/10 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
python爬取51job中hr的邮箱
2016/05/14 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Python如何读取文件中图片格式
2020/01/13 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
信访工作者先进事迹
2014/01/17 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
员工晚婚的请假条
2014/02/08 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
公开承诺书格式
2014/05/21 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
单位租车协议书
2015/01/29 职场文书
计划生育个人总结
2015/03/02 职场文书