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

首頁 > 語言 > JavaScript > 正文

javascript中mouseover、mouseout使用詳解

2024-05-06 16:23:28
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了javascript中mouseover、mouseout使用詳解的相關資料,需要的朋友可以參考下

本文并沒有像標題說的那樣,真正阻止事件元素的子元素冒泡...

只是在子元素冒泡到事件元素處時進行了一個判斷,判斷是否要觸發事件,哦...不對 應該是是否要運行事件函數中的相關操作...

首先你可以猛戳這里:問題的出現

注:jquery中的mouseover/out事件也有此問題

解決方法一:

在ie下有mouseenter 與 mouseleave事件來替代mouseover 和 mouseout。

網上很多說法,這兩個事件只有ie支持,其他瀏覽器不支持。

但是我在最新版本的火狐與谷歌都支持了mouseenter 與 mouseleave!!!!!

另外ie是的支持范圍是:[ie5+ ,所以我們還是別噴ie了...

其他瀏覽器測試了下:

在Firefox/3.6.28是不支持mouseenter 與 mouseleave的,Firefox具體從哪個版本開始支持這兩個事件,就不得而知了...

在Opera9.50 Alpha 與Opera9.00 Beta都不支持。其實Opera現在完全可以不要測試了,最新版的Opera都是webkit內核...

谷歌低版本未測試...

當然這些老版本瀏覽器基本可以不用管了,所以這應該是最好的解決辦法了:用mouseenter 與 mouseleave事件來替代mouseover 和 mouseout。

此二事件的實例戳這:mouseenter與mouseleave

注:jquery中也有mouseenter 與 mouseleave事件,兼容所有瀏覽器。

解決方法二:

上面那個方法在老版本的火狐與谷歌是不支持的,如果你希望得到最大范圍的兼容,那可以繼續往下看

我們利用var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement 來獲取事件相關元素。再通過這個事件相關元素它跟事件元素的關系(包含的關系),來判斷是否做相關事件處理。

對于mouseout事件來說,reltg就是鼠標指針離開目標時,鼠標指針進入的節點。

對于mouseover 事件來說,reltg就是鼠標指針移到目標節點上時所離開的那個節點。

在li的mouseout的事件函數中,如果reltg為li的子元素我們就不要運行相關操作,如果reltg為li的父元素就運行相關操作。

我們可以通過下面的isMouseLeaveOrEnter函數來判斷li與reltg的包含關系:

 

 
  1. //判斷事件相關元素與li的關系 如果事件相關元素為li的子元素就返回false 反之返回true 
  2. function isMouseLeaveOrEnter(e, handler) {  
  3.   if (e.type != 'mouseout' && e.type != 'mouseover'return false;  
  4.   var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement; 
  5.   while (reltg && reltg != handler) reltg = reltg.parentNode; 
  6.   return (reltg != handler); 
  7. }; 
  8.  
  9. Li.onmouseout = function(e) { 
  10.   e = e||window.event; 
  11.   if (isMouseLeaveOrEnter(e,this)) { 
  12.     //運行相關操作 
  13.   }; 

此方法明顯的缺點就是isMouseLeaveOrEnter中要遍歷所有的父元素了,性能問題

解決方法三:

此方法與方法二其實思路是一樣的,只是我們這里通過compareDocumentPosition/contains來判斷li與reltg的包含關系,優化了方法二遍歷所有父元素帶來的性能問題。

直接看代碼吧:

 

 
  1. //判斷node是否為parent的子元素 
  2. //if node == parent 也會返回true 
  3. function contains(parent, node) { 
  4.   if(parent.compareDocumentPosition){ //ff 
  5.     var _flag = parent.compareDocumentPosition(node);  
  6.     return (_flag == 20 || _flag == 0)? true : false;  
  7.   }else if(parent.contains){ //ie 
  8.     return parent.contains(node); 
  9.   } 
  10. }; 
  11.  
  12. Li.onmouseout = function(e) { 
  13.   e = e||window.event; 
  14.   var relatedEle = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement 
  15.   if (!contains(this, relatedEle)) { 
  16.     show.innerHTML=show.innerHTML+'0'
  17.   } 
  18.  

compareDocumentPosition() 方法比較兩個節點,并返回描述它們在文檔中位置的整數。

返回值可能是:

1:沒有關系,兩個節點不屬于同一個文檔。

2:第一節點(P1)位于第二個節點后(P2)。

4:第一節點(P1)定位在第二節點(P2)前。

8:第一節點(P1)位于第二節點內(P2)。

16:第二節點(P2)位于第一節點內(P1)。

32:沒有關系,或是兩個節點是同一元素的兩個屬性。

注釋:返回值可以是值的組合。例如,返回 20 意味著在 p2 在 p1 內部(16),并且 p1 在 p2 之前(4)。

而[ie8- 不支持compareDocumentPosition()方法,需要用contains代替compareDocumentPosition()方法那么強大,它是用來確定 nodeB 是否包含在另一個 nodeA 中:nodeA .contains( nodeB )

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一区中文字幕| 国产精品18久久久久久首页狼| 国产精自产拍久久久久久| 久久最新资源网| 欧美视频中文在线看| 国产视频久久久久| 成人午夜黄色影院| 高清视频欧美一级| 国产精品天天狠天天看| 欧美激情综合色| 日韩福利在线播放| 九九久久久久99精品| 国产精品久久久久av免费| 亚洲最新视频在线| 国产主播欧美精品| 国产精品96久久久久久又黄又硬| 欧美精品一本久久男人的天堂| 亚洲美女自拍视频| 91精品久久久久久久久久| 国内精品久久久| 日韩中文字幕精品视频| 91久久久久久国产精品| 国产91精品网站| 伊人亚洲福利一区二区三区| 国产手机视频精品| 色偷偷亚洲男人天堂| 日韩中文字幕免费视频| 日韩av资源在线播放| 不卡av电影在线观看| 992tv成人免费视频| 久久精品国产免费观看| 日韩视频第一页| 91精品久久久久久久久久久| 国产啪精品视频网站| 亚洲国产婷婷香蕉久久久久久| 久久国产精彩视频| 日韩av影院在线观看| 久久夜色精品国产| www.日韩av.com| 欧美精品激情在线观看| 4k岛国日韩精品**专区| 国产精品av免费在线观看| 国产精品一区二区三区久久久| 欧美专区第一页| 91wwwcom在线观看| 亚洲综合中文字幕在线| 日韩欧美有码在线| 懂色av一区二区三区| 日韩女在线观看| 欧美三级xxx| 亚洲男人第一av网站| 欧美性xxxx在线播放| 亚洲成人激情在线| 国产精品一区二区三区免费视频| 国产精品视频自在线| 国产一区视频在线播放| 亚洲精品av在线播放| 性视频1819p久久| 不卡av在线网站| 精品国产乱码久久久久酒店| 国产欧美日韩免费| 欧美在线日韩在线| 亚洲电影免费观看高清完整版在线观看| 日韩视频―中文字幕| 亚洲欧美自拍一区| 亚洲图中文字幕| 日韩亚洲一区二区| 欧美日韩一二三四五区| 欧美成人免费全部观看天天性色| 97超碰国产精品女人人人爽| 91欧美精品午夜性色福利在线| 欧美人在线视频| 国产一区欧美二区三区| 国语自产精品视频在免费| 亚洲人成在线观看网站高清| 国产成人综合久久| 中文字幕亚洲欧美日韩2019| 国产一区二区三区精品久久久| www.久久久久| 中文字幕欧美日韩| 久久久久久久久爱| 欧美国产亚洲精品久久久8v| 国产精品久久久久免费a∨| 77777亚洲午夜久久多人| 欧美一级电影在线| 欧美一级免费视频| 亚洲精品日韩av| 国产精品黄色影片导航在线观看| www.欧美三级电影.com| 韩剧1988免费观看全集| 欧美中文在线观看国产| 亚洲片在线观看| 国产精品久久综合av爱欲tv| 91国产一区在线| 日韩毛片中文字幕| 91精品国产综合久久香蕉的用户体验| 最近2019中文免费高清视频观看www99| 成人性生交大片免费看视频直播| 久久久久久国产精品美女| 91精品中文在线| 久久精品国亚洲| 中文字幕日韩欧美精品在线观看| 国产999视频| 91精品免费看| 精品日韩视频在线观看| 一区二区三区在线播放欧美| 国产精品稀缺呦系列在线| 日韩理论片久久| 亚洲区一区二区| 日韩成人在线视频观看| 国产福利视频一区| 亚洲最大成人网色| 美女啪啪无遮挡免费久久网站| 久久激情视频免费观看| 欧美国产日韩一区二区| 国产成人一区二区三区| 欧美丝袜一区二区三区| 日韩中文字幕av| 亚洲最大福利视频网| 欧美激情一二三| 永久555www成人免费| 国产精品高潮呻吟视频| 亚洲国产精品久久久| 亚洲黄色av女优在线观看| 欧美日韩国产一中文字不卡| 欧美裸体xxxx极品少妇| 国产一区二区免费| 欧美日韩精品在线播放| 欧美色道久久88综合亚洲精品| 欧美日韩一区二区在线播放| 在线观看国产精品91| 欧美日韩国产va另类| 欧美日韩激情视频8区| 亚洲性猛交xxxxwww| 中文字幕久久亚洲| 日韩成人性视频| 国产精品高清在线观看| 久久亚洲欧美日韩精品专区| 91国产精品91| 久久久久久尹人网香蕉| 欧美极品少妇xxxxⅹ免费视频| 亚洲最大的av网站| 亚洲男人第一网站| 亚洲欧美成人在线| 国产精品一二三在线| 亚洲日韩第一页| 91在线观看免费高清完整版在线观看| 欧美日韩国产123| 亚洲欧美在线一区| 91chinesevideo永久地址| 亚洲成人精品视频在线观看| www.日韩欧美| 日韩精品极品视频| 久久久国产精品亚洲一区| 亚洲欧美激情精品一区二区| 日韩欧美国产一区二区| 91精品一区二区| 日韩中文字幕在线视频| 亚洲男人天堂2019| 国产精品免费观看在线| 久久男人资源视频| 中文字幕在线亚洲| 成人综合国产精品| 久久精品国产2020观看福利|