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 delete 属性的使用
Oct 08 Javascript
jQuery 处理网页内容的实现代码
Feb 15 Javascript
JavaScript判断DOM何时加载完毕的技巧
Nov 11 Javascript
jQuery之过滤元素操作小结
Nov 30 Javascript
ajax+jQuery实现级联显示地址的方法
May 06 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
Aug 04 Javascript
JS判断两个数组或对象是否相同的方法示例
Feb 28 Javascript
Vue框架下引入ActiveX控件的问题解决
Mar 25 Javascript
jquery实现烟花效果(面向对象)
Mar 10 jQuery
JavaScript创建表格的方法
Apr 13 Javascript
vue使用echarts画组织结构图
Feb 06 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 microtime获取浮点的时间戳
2010/02/21 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
Javascript window对象详解
2014/11/12 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
python os模块简单应用示例
2019/05/23 Python
python画图的函数用法以及技巧
2019/06/28 Python
Python流程控制 while循环实现解析
2019/09/02 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
python能做哪些生活有趣的事情
2020/09/09 Python
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
表达自我的市场:Society6
2018/08/01 全球购物
临床医学系毕业生推荐信
2013/11/09 职场文书
计算机应用专业推荐信
2013/11/13 职场文书
网络技术专业求职信
2014/05/02 职场文书
党代会心得体会
2014/09/04 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL