
一、关于鼠标悬停事件和延迟
鼠标通过事件是网页上非常常见的事件之一。可以使用CSS:hover伪类实现简单的悬停,而使用js可以实现更复杂的悬停。
在正常情况下,我们不会延迟鼠标悬停事件的处理。但是,有时为了避免不必要的干扰,鼠标悬停事件通常会延迟。所谓干扰是指用户无意间滑动链接,选项卡或其他区域,不显示隐藏层或切换选项卡,而是因为这些元素绑定到悬停事件(或鼠标悬停事件)),并且没有延迟,这些时间将立即触发,但会干扰用户。
例如,在Tencent.com主页上,几乎所有鼠标通过事件都会延迟处理,例如其选项卡:

或顶部的搜索导航栏,请参见下图:


二、示例和演示
本文的主要内容是展示我几天前编写的鼠标延迟方法。 jQuery下的方法很尴尬,仅供参考。本文以Tencent.com主页上的搜索栏中的一些鼠标传递效果为例,以演示jQuery下的延迟处理。下图是演示页面的屏幕截图:

您可以点击此处:腾讯搜索搜索框延迟演示
三、代码和实现
说到延迟,它与窗口下的setTimeout方法是分不开的。此示例中jQuery方法的核心也是setTimeout。代码不长,完整如下:
(function($){
$.fn.hoverDelay = function(options){
var defaults = {
hoverDuring: 200,
outDuring: 200,
hoverEvent: function(){
$.noop();
},
outEvent: function(){
$.noop();
}
};
var sets = $.extend(defaults,options || {});
var hoverTimer, outTimer;
return $(this).each(function(){
$(this).hover(function(){
clearTimeout(outTimer);
hoverTimer = setTimeout(sets.hoverEvent, sets.hoverDuring);
},function(){
clearTimeout(hoverTimer);
outTimer = setTimeout(sets.outEvent, sets.outDuring);
});
});
}
})(jQuery);

此代码的目的是将鼠标与事件和延迟分开。通过该方法解决了延迟和延迟的清除。您所要做的就是设置延迟时间以及相应的鼠标通过或移除事件。举一个简单的例子,下面的代码:
$("#test").hoverDelay({
hoverEvent: function(){
alert("经过我!");
}
});
表示ID为test的元素将弹出一个带有“ Pass Me!”字样的弹出框。鼠标经过200毫秒后。
关于此js,您可以单击此处:jquery.hoverdelay.js(725字节)
好,现在适用于本文的示例。
除了鼠标在腾讯网站首页上的搜索框上出现延迟外,其外观也值得一提。在有关jQuery-Ma Huateng产品设计和用户体验的文章中,我还提到了外观。 ,相应的演示页面,您可以单击此处:腾讯首页个性化皮肤演示页面
首先,在腾讯首页上显示搜索栏的主要HTML域代码:

网页
图片
视频
音乐
搜吧
问问
博客
更多▼
与第一个首页代码几乎相同,例如假冒替换。在本文中应用了几乎没有技术内容的延迟方法之后,您可以应用以下代码来实现延迟执行。
$(".s2").each(function(){
$("#sosoFod h3").each(function(){
var that = $(this);
var id = that.attr("id");
if(id){
that.hoverDelay({
hoverEvent: function(){
$(".s1").attr("class","s2");
that.attr("class","s1"); //感谢“type23”提供了绑定对象方法
$(this).attr("class","s1");
}
});
}else{
that.hoverDelay({
outDuring: 1000,
hoverEvent: function(){
$("#tm").show();
},
outEvent: function(){
$("#tm").hide();
}
});
}
});
哦,我很as愧,代码就是这样,没有技术内容,希望对有用的东西有用。移出鼠标1000毫秒后,“更多”下拉框将隐藏。
基本上,代码支持页面,所以让我们谈谈有用的东西。
hoverDelay方法中有四个参数,表示以下内容:
悬停在鼠标通过的延迟时间内

outDuring鼠标移出的延迟时间
hoverEvent鼠标传递执行的方法
outEvent鼠标移出执行方法
四、 I嚓,结束语
月光大师曾经说过与以下主要含义相同的意思:在博客上写三到五天的重量级文章,每隔两天写一次简单的低价值文章是个好主意。这篇文章是价值较低的文章,涉嫌构成文章数。另外,js本身还很不成熟,因此本文的内容是一般性的,仅供参考。
顺便说一句,我有一个问题,关于在编写诸如jQuery插件组件之类的公共方法时如何将当前对象传递给set default方法。例如,在此示例中,如果当前的$(this)对象传递给hoverEvent或outEvent方法,则希望有人能给我建议。
原创文章,请注明张新旭心天命[]
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-314117-1.html
美的