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 相关文章推荐
几行代码轻松搞定jquery实现flash8类似的连接效果
May 03 Javascript
prototype Element学习笔记(篇二)
Oct 26 Javascript
一次失败的jQuery优化尝试小结
Feb 06 Javascript
javascript事件冒泡实例分析
May 13 Javascript
jQuery插件pagewalkthrough实现引导页效果
Jul 05 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
Nov 02 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
vue动画打包后失效问题的解决方法
Sep 18 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
Sep 29 Javascript
jquery获取input输入框中的值
Nov 13 jQuery
node.js使用stream模块实现自定义流示例
Feb 13 Javascript
vue + el-form 实现的多层循环表单验证
Nov 25 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
php自动注册登录验证机制实现代码
2011/12/20 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
JS实现密码框效果
2020/09/10 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
python检测远程udp端口是否打开的方法
2015/03/14 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
python多进程实现文件下载传输功能
2018/07/28 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
影视后期实训报告
2014/11/05 职场文书
校车安全管理责任书
2015/05/11 职场文书
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL