问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jQuery hover 延时器实现代码

发布网友 发布时间:2022-04-27 05:47

我来回答

1个回答

热心网友 时间:2022-04-23 09:47

例如:
复制代码
代码如下:
$('#foo').slideUp(300).delay(800).fadeIn(400);//
在.slideUp()

.fadeIn()之间延时800毫秒。
hover是否可以设计一个延时器呢?答案是肯定的。延时操作目的是为了防止用户误触发事件,一般情况下鼠标指针小于150毫秒的停留时间都可以被忽略。其实,如果入侵delay全能让其作用在hover事件上,但是为了避免John
Resig不断的折腾jQuery而导致兼容问题,还是老老实实的写标准插件比较好。
目标
继承jQuery
API的优雅:jQuery(expression).mouseDelay(150).hover(over,
out)
不得破坏jQuery原型链
上述目标看起来很帅气,实现起来却非常简单,仅仅十多行的代码我都不好意思拿来拼凑文章:
源代码
复制代码
代码如下:
/*!
*
jQuery.mouseDelay.js
v1.2
*
http://www.planeart.cn/?p=1073
*
Copyright
2011,
TangBin
*
Dual
licensed
under
the
MIT
or
GPL
Version
2
licenses.
*/
(function
($,
plugin)
{
var
data
=
{},
id
=
1,
etid
=
plugin
+
'ETID';
//
延时构造器
$.fn[plugin]
=
function
(speed,
group)
{
id
++;
group
=
group
||
this.data(etid)
||
id;
speed
=
speed
||
150;
//
缓存分组名称到元素
if
(group
===
id)
this.data(etid,
group);
//
暂存官方的hover方法
this._hover
=
this.hover;
//
伪装一个hover函数,并截获两个回调函数交给真正的hover函数处理
this.hover
=
function
(over,
out)
{
over
=
over
||
$.noop;
out
=
out
||
$.noop;
this._hover(function
(event)
{
var
elem
=
this;
clearTimeout(data[group]);
data[group]
=
setTimeout(function
()
{
over.call(elem,
event);
},
speed);
},
function
(event)
{
var
elem
=
this;
clearTimeout(data[group]);
data[group]
=
setTimeout(function
()
{
out.call(elem,
event);
},
speed);
});
return
this;
};
return
this;
};
//
冻结选定元素的延时器
$.fn[plugin
+
'Pause']
=
function
()
{
clearTimeout(this.data(etid));
return
this;
};
//
静态方法
$[plugin]
=
{
//
获取一个唯一分组名称
get:
function
()
{
return
id
++;
},
//
冻结指定分组的延时器
pause:
function
(group)
{
clearTimeout(data[group]);
}
};
})(jQuery,
'mouseDelay');
API说明
#api
table
{
width:99%;
}
#api
table
th
{
color:#808080;
font-weight:bold;
text-shadow:1px
1px
#FFF;
}
#api
td,
#api
th
{
padding:3px;
}
#api
td.time,#api
th.time
{
color:
#999;
text-align:
right;
width:
110px;
}
#api
tr.odd
td,#api
tr.odd
th
{
background-color:#F7F9FD;
}
方法
参数
说明
mouseDelay
(speed,
group)
速度,
设置延时分组名称
设置延时触发效果.
两个参数都是可选的
mouseDelayPause()
[无]
冻结选定元素的延时器
jQuery.mouseDelay.pause
(group)
延时分组名称
冻结指定分组的延时器
jQuery.mouseDelay.get
()
[无]
获取一个不重复的分组名下载
jQuery.mouseDelay.js
jQuery.mouseDelay.min.js
演示
http://demo.jb51.net/js/2011/mouseDelay/index.htm
打包下载
planeArt.cn原创文章
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
YY聊天中哪些语音的会不会作为文件存下来 2023谷雨节气的含义 谷雨三候是什么 我老公欠债,外遇,我想离婚,怎么办 ...我提供了我的姓名,出生年月日,还有工作地点,会出什么事吗... 刚刚接到一个诈骗电话,问我要了我的姓名和出生年月日,会不会利用... 不小心接到骗子的电话,还告诉了我的姓名和出生年月日,要不要紧啊... 知道了姓名和出生年月日,能拿来作案吗? WOW安装要CD 是什么问题? 急急急、、、魔兽世界用盘安装时老要CD片 时怎么回事 取消以后就安装不... 每次下载魔兽世界安装中途都会断掉,要求插入什么CD,然后出现这么一段文... 继电器js7 原理是什么?如何调整延时范围? js clearTimeout不起作用怎么回事,关不了那个定时器 要写小说词穷,想不出好名字所以要一些好听的古代男女的名字 js html 问题,急求一明白人,延时器为什么不好用。 求一些好听的古代女子名,男子名,丫头名。 javascript 延时显示隐藏DIV javascript 定时器如何使用?涉及到得函数有哪些? js延时器setTimeout(,)把第一个参数直接设置为一段函数,第二个参数就... 起优雅的古代名字 javascript的一个闭包和延时器问题,怎么解决? 起好听的古人名字 好听的名字(古代) 有哪些好听的古人名字? 一群红领围了过来,不一会儿就帮这位小姑娘把苹果捡了起来,用了什么手法 QQ高级群红色消失 小弟弟旁边一群红的,很痒 我建的高级群红色的怎么变成不红了、我会员掉了2个月 可是还是VIP4 怎么在亮啊! 怀化大峡谷和群红山庄哪个离怀化高铁站近点? 罗刹魂有普通群红吗? 导演组对群红呼喻六小龄童上春晚最新建意 好听的古代人名 javascript怎样给这个代码加上个定时器让它延时500毫秒显示呢?_百度... JavaScript提供了哪些定时器? js定时器的准确时间? js定时器怎么写? 玉手镯是纯色的好,还是多色的好 js中怎样能让定时器立刻执行? 翡翠手镯上有绿、黄、紫 三种颜色好,还是只有一种颜色好呢? 玉手镯中有很多颜色是好的吗,哪种的比较好啊 玉镯的哪种颜色比较好? 怎样挑选玉镯?是颜色深的好还是颜色浅的好? 玉镯的好坏该怎样识别? 玉镯什么颜色好点?最基本的分辨方法是什么?谢谢 玉镯颜色均匀不透明的和透明的颜色深一些的哪个好 手机聊天记录已经删除 恢复出厂设置后聊天记录还能找到吗? 按手机自带的备份与恢复以后导致最近的聊天记录没有了,咋办能恢复吗 按手机自带的备份与恢复以后导致最近的聊天记录没有了,咋办能恢复吗? 手机被恢复出厂设置后,微信聊天记录能不能找回来? 简单的面食的做法 花样大全窍门 面条的做法 花样大全家常简单