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 07 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
JS回调函数的应用简单实例
Sep 17 Javascript
HTML,CSS,JavaScript速查表推荐
Dec 02 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
Mar 23 Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 Javascript
Bootstrap导航条学习使用(二)
Feb 08 Javascript
vue实现选项卡及选项卡切换效果
Apr 24 Javascript
详解react-refetch的使用小例子
Feb 15 Javascript
React 使用Hooks简化受控组件的状态绑定
Mar 18 Javascript
使用webpack搭建vue项目及注意事项
Jun 10 Javascript
javascript的setTimeout()使用方法总结
Nov 20 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发电子邮件
2006/10/09 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
js中判断控件是否存在
2010/08/25 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
致长跑运动员广播稿
2014/01/31 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
操行评语大全
2014/04/30 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
幼师小班个人总结
2015/02/12 职场文书
后勤个人工作总结
2015/02/28 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
如何在Python项目中引入日志
2021/05/31 Python
Python中的 No Module named ***问题及解决
2022/07/23 Python