国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery 鼠標經過(hover)事件的延時處理示例

2019-11-20 20:49:45
字體:
來源:轉載
供稿:網友
一、關于鼠標hover事件及延時
鼠標經過事件為web頁面上非常常見的事件之一。簡單的hover可以用CSS :hover偽類實現,復雜點的用js。

一般情況下,我們是不對鼠標hover事件進行延時處理。但是,有時候,為了避免不必要的干擾,常會對鼠標hover事件進行延時處理。所謂干擾,就是當用戶鼠標不經意劃過摸個鏈接,選項卡,或是其他區域時,本沒有顯示隱藏層,或是選項卡切換,但是由于這些元素上綁定了hover事件(或是mouseover事件),且無延時,這些時間就會立即觸發,反而會對用戶進行干擾。

例如,在騰訊網首頁,幾乎對所有的鼠標經過事件進行了延時處理,例如其選項卡:

騰訊首頁選項卡 張鑫旭-鑫空間-鑫生活 

或是其頂部的搜搜導航條,見下圖:

騰訊網首頁搜搜搜索欄 張鑫旭-鑫空間-鑫生活 

二、實例及演示
本文的主要內容就是展示我前幾天寫的鼠標延遲的方法,jQuery下的方法,水平拙劣,僅供參考。本文就以騰訊網首頁搜搜搜索欄的一些鼠標經過效果為實例,演示jQuery下的延時處理。下圖為demo頁面的效果截圖:

jQuery鼠標延遲demo截圖 張鑫旭-鑫空間-鑫生活 

三、代碼與實現
說到延時,離不開window下的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的元素在鼠標經過后200毫秒后彈出含有“經過我!”文字字樣的彈出框。

ok,現在應用到本文的實例上。

騰訊網的首頁的搜索框上面除了鼠標經過延時,其換膚也是值得一提的,關于換膚我之前也提過,在jQuery-馬化騰產品設計與用戶體驗的一些技術實現一文中,相應的demo頁面您可以狠狠地點擊這里:騰訊首頁個性化換膚demo頁面

首先,展示下騰訊首頁搜索欄的主要HTML結構域代碼:

復制代碼 代碼如下:

<div id="sosoFod">
<h3 id="sosoweb" class="s1">網頁</h3>
<h3 id="sosoimg" class="s2">圖片</h3>
<h3 id="sosovid" class="s2">視頻</h3>
<h3 id="sosomus" class="s2">音樂</h3>
<h3 id="sososoba" class="s2">搜吧</h3>
<h3 id="sosowenwen" class="s2">問問</h3>
<h3 id="sosoqz" class="s2">博客</h3>
<h3 style="cursor:pointer;" class="s2">更多 主站蜘蛛池模板: 阳新县| 合川市| 布尔津县| 于都县| 曲周县| 河池市| 马鞍山市| 密云县| 三亚市| 沽源县| 章丘市| 咸宁市| 昭通市| 凌海市| 吴川市| 滨州市| 扶绥县| 石台县| 轮台县| 黄陵县| 通山县| 石泉县| 桓仁| 舟山市| 聂荣县| 桦川县| 张家界市| 龙胜| 延安市| 望城县| 丹江口市| 平武县| 台北县| 皮山县| 崇阳县| 西安市| 新安县| 于田县| 鹤庆县| SHOW| 和硕县|