亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery中多個元素的Hover事件解決方案

2019-11-20 14:29:33
字體:
來源:轉載
供稿:網友
1.需求簡介

jQuery的hover事件只是針對單個HTML元素,例如:
復制代碼 代碼如下:

$('#login').hover(fun2, fun2);

當鼠標進入#login元素時調用fun1函數,離開時則調用fun2函數,這種API已能夠滿足絕大部分需求。

不過,有些時候我們希望當鼠標進入兩個或多個元素時觸發fun1,離開他們時觸發fun2,而在這些元素間移動鼠標并不觸發任何事件。例如兩個元素緊挨著的HTML元素,如下圖:

 

當鼠標進入二者的區域時觸發fun1,離開時觸發fun2。你也許會想到使用下面的方式
復制代碼 代碼如下:

$('#trigger, #drop'),hover(fun1, fun2);

這種方式并不能滿足我們的需求,因為從#trigger進入#drop時會觸發fun2和fun1。要解決這個問題,一種比較簡單的方式是更改HTML結構,實現方式如下:
復制代碼 代碼如下:

<div id="container">
<div id="trigger"></div>
<div id="drop"></div>
</div>

$('#container').hover(fun1, fun2);

這樣通過在父元素上綁定hover事件來實現此功能。

2.示例研究

下圖為常見的下拉菜單簡化圖,HTML結構如下:

 
復制代碼 代碼如下:

ul id="#nav">
<li></li>
<li></li>
<li id="droplist">
<span>下拉菜單</span>
<ul>
<li>下拉項1</li>
<li>下拉項2</li>
<li>下拉項3</li>
<ul>
</li>
<li></li>
</ul>

實現的JavaScrip程序也是非常簡單
復制代碼 代碼如下:

$('#droplist').hover(function(){
$(this).find('ul').show();
}, function(){
$(this).find('ul').hide();
});

這種實現方式邏輯清晰,但導致HTML嵌套層級過多,書寫CSS時出現了許多不便。例如:
復制代碼 代碼如下:

#nav li { font-size:14px; }

我們希望這段CSS為第一層li元素設置14像素字體,但是其也作用于了第二層元素,所以不得不使用下面的語句改寫過來
復制代碼 代碼如下:

#nav li li { font-size:12px; }

3.解決方案

更改HTML結構
復制代碼 代碼如下:

<ul id="#nav">
<li></li>
<li></li>
<li id="trigger">下拉菜單</li>
<li></li>
</ul>
<ul id="drop">
<li>下拉項1</li>
<li>下拉項2</li>
<li>下拉項3</li>
<ul>

依次引入JS文件
復制代碼 代碼如下:

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.mixhover.js"></script>

控制代碼
復制代碼 代碼如下:

$.mixhover(
'#trigger',
'#drop',
function(trg, drop){
#(drop).show();
},
function(trg, drop){
#(drop).hide();
}
)

這樣當鼠標進入#trigger時將#drop顯示出來,鼠標從#trigger移如#drop時不會觸發任何事件,實際上就是講#trigger和#drop元素當做一個元素來處理。

jquery.mixhover.js程序如下
復制代碼 代碼如下:

/**
* Author: http://rainman.cnblogs.com/
* Date: 2014-06-06
* Depend: jQuery
*/
$.mixhover = function() {
// 整理參數 $.mixhover($e1, $e2, handleIn, handleOut)
var parms;
var length = arguments.length;
var handleIn = arguments[length - 2];
var handleOut = arguments[length - 1];
if ($.isFunction(handleIn) && $.isFunction(handleOut)) {
parms = Array.prototype.slice.call(arguments, 0, length - 2);
} else if ($.isFunction(handleOut)) {
parms = Array.prototype.slice.call(arguments, 0, length - 1);
handleIn = arguments[length - 1];
handleOut = null;
} else {
parms = arguments;
handleIn = null;
handleOut = null;
}

// 整理參數 使得elements依次對應
var elems = [];
for (var i = 0, len = parms.length; i < len; i++) {
elems[i] = [];
var p = parms[i];
if (p.constructor === String) {
p = $(p);
}
if (p.constructor === $ || p.constructor === Array) {
for (var j = 0, size = p.length; j < size; j++) {
elems[i].push(p[j]);
}
} else {
elems[i].push(p);
}
}

// 綁定Hover事件
for (var i = 0, len = elems[0].length; i < len; i++) {
var arr = [];
for (var j = 0, size = elems.length; j < size; j++) {
arr.push(elems[j][i]);
}
$._mixhover(arr, handleIn, handleOut);
}
};
$._mixhover = function(elems, handleIn, handleOut) {
var isIn = false, timer;
$(elems).hover(function() {
window.clearTimeout(timer);
if (isIn === false) {
handleIn && handleIn.apply(elems, elems);
isIn = true;
}
},
function() {
timer = window.setTimeout(function() {
handleOut && handleOut.apply(elems, elems);
isIn = false;
}, 10);
});
};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线观看国产精品91| 日本在线观看天堂男亚洲| 久久精品电影网| 亚洲国产成人爱av在线播放| 欧美理论在线观看| 欧美成年人视频网站| 2020久久国产精品| 色多多国产成人永久免费网站| 成人免费网视频| 国产在线精品成人一区二区三区| 欧美成人自拍视频| 国产成人亚洲综合91精品| 欧美国产第一页| 2019中文字幕在线免费观看| 色视频www在线播放国产成人| 久久精品91久久香蕉加勒比| 日韩在线小视频| 在线亚洲国产精品网| 一区二区三区回区在观看免费视频| 一区二区成人精品| 91夜夜揉人人捏人人添红杏| 久久久久成人网| 亚洲成成品网站| 国产精品91免费在线| 国产成人激情视频| 国产欧美亚洲精品| 欧美日韩国内自拍| 亚洲人a成www在线影院| 国产欧美日韩最新| 亚洲精品久久久一区二区三区| 成人免费网站在线观看| 狠狠色狠色综合曰曰| 亚洲在线第一页| 日韩久久精品电影| 国产精品777| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久在线观看视频| 国产精品视频精品视频| 成人福利免费观看| 亚洲开心激情网| 亚洲欧洲国产一区| 九九视频直播综合网| 亚洲视频777| 国产精品色午夜在线观看| 日韩在线视频国产| 日韩精品极品视频| 亚洲精品99久久久久| 国产成人精品免高潮费视频| 欧美成人精品激情在线观看| 亚洲最大的网站| 日韩精品电影网| 国产欧美亚洲视频| 亚洲国产精品va在看黑人| 日韩av在线导航| 欧美激情在线有限公司| 欧美激情性做爰免费视频| 性欧美视频videos6一9| 日韩成人激情视频| 日本伊人精品一区二区三区介绍| 成人久久一区二区| 97免费中文视频在线观看| 在线观看视频99| 国产成人97精品免费看片| 久久av资源网站| 亚洲欧美日韩视频一区| 亚洲影院色在线观看免费| 日韩精品极品在线观看播放免费视频| 精品夜色国产国偷在线| 欧美午夜精品久久久久久久| 欧美床上激情在线观看| 国产精品18久久久久久首页狼| 国产精品久久久精品| 97视频在线观看免费高清完整版在线观看| 色婷婷av一区二区三区久久| 91免费综合在线| 欧美性猛交xxxx免费看漫画| 国产69精品久久久久9| 亚洲人成人99网站| 国产日韩在线精品av| 日韩av综合网站| 国产在线日韩在线| 伊人久久免费视频| 久久成人免费视频| 欧美大尺度在线观看| 欧美成人在线影院| 色爱av美腿丝袜综合粉嫩av| 欧美性猛交xxxxx免费看| 日韩在线不卡视频| 欧美大秀在线观看| 91在线视频成人| 成人动漫网站在线观看| 日韩亚洲一区二区| 欧美巨乳美女视频| 精品国产区一区二区三区在线观看| 欧美孕妇孕交黑巨大网站| 91精品国产网站| 在线a欧美视频| 欧美在线影院在线视频| 中文字幕亚洲天堂| 欧美激情亚洲精品| 日韩av网站在线| 97精品视频在线播放| 国产成人免费91av在线| 国外视频精品毛片| 91高清在线免费观看| 国产精品com| 成人午夜小视频| 欧美影院成年免费版| 中文字幕在线看视频国产欧美| 亚洲欧洲日本专区| 在线免费看av不卡| 欧美视频中文在线看| 欧美激情精品久久久久久变态| 欧美激情久久久久久| 欧美日韩中文字幕在线| 日韩精品在线观看视频| 97精品视频在线观看| 久久天天躁狠狠躁夜夜av| 国产亚洲福利一区| 欧美黑人一区二区三区| 日韩av观看网址| 久久精品久久久久| 欧美日韩中文字幕在线视频| 日韩精品一二三四区| 亚洲欧美日韩精品| 亚洲精选一区二区| 欧美韩国理论所午夜片917电影| 国产视频精品va久久久久久| 中文字幕欧美精品在线| 欧美福利在线观看| 欧美性猛交xxxx黑人| 国产精品美女av| 精品国产成人在线| 国产亚洲人成a一在线v站| 日本亚洲欧美成人| 欧美大胆a视频| 91精品国产91久久久久久| 久久久成人精品视频| 欧美中文在线观看| 欧美疯狂做受xxxx高潮| 日韩在线激情视频| 欧美在线视频在线播放完整版免费观看| 久久精品男人天堂| 亚洲欧美中文日韩在线v日本| 97视频免费看| 91精品视频免费| 日韩免费av在线| 国产精品99久久久久久人| 国产一区二区久久精品| 日本亚洲欧美三级| 欧美一级大片在线观看| 亚洲欧美成人一区二区在线电影| 伊人久久久久久久久久| 高清亚洲成在人网站天堂| 欧美日韩亚洲精品内裤| 国产精品wwww| 国产精品永久免费在线| 亚洲国产精品悠悠久久琪琪| 欧美日韩在线视频一区| 国产精品一区久久久| 亚洲美女av在线播放| 国产日韩欧美视频| 国产精品ⅴa在线观看h| 欧美大片大片在线播放|