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 AJAX返回的JSON结果集实现代码
Dec 10 Javascript
取得元素的左和上偏移量的方法
Sep 17 Javascript
node.js中的fs.lchmod方法使用说明
Dec 16 Javascript
jQuery中$.extend()用法实例
Jun 24 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
Aug 29 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
javascript使用递归算法求两个数字组合功能示例
Jan 03 Javascript
Three.js基础部分学习
Jan 08 Javascript
简单的Vue SSR的示例代码
Jan 12 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 Javascript
Vue实现图片与文字混输效果
Dec 04 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的FTP学习(一)[转自奥索]
2006/10/09 PHP
php仿discuz分页效果代码
2008/10/02 PHP
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
jquery map方法使用示例
2014/04/23 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
Saltstack快速入门简单汇总
2016/03/01 Python
Python 正则表达式的高级用法
2016/12/04 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
打架检讨书100字
2014/01/08 职场文书
作弊检讨书1000字
2014/02/01 职场文书
周年庆典主持词
2014/04/02 职场文书
政风行风建设责任书
2014/07/23 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python