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

首頁 > 編程 > JavaScript > 正文

JavaScript和JQuery的鼠標mouse事件冒泡處理

2019-11-20 12:13:00
字體:
來源:轉載
供稿:網友

簡單的鼠標移動事件:

進入

復制代碼 代碼如下:

mouseenter:不冒泡
mouseover: 冒泡

不論鼠標指針穿過被選元素或其子元素,都會觸發 mouseover 事件
只有在鼠標指針穿過被選元素時,才會觸發 mouseenter 事件

移出

復制代碼 代碼如下:

mouseleave: 不冒泡
mouseout:冒泡

不論鼠標指針離開被選元素還是任何子元素,都會觸發 mouseout 事件
只有在鼠標指針離開被選元素時,才會觸發 mouseleave 事件

我們通過一個案例觀察下問題:

給一個嵌套的層級綁定mouseout事件,會發現mouseout事件與想象的不一樣

復制代碼 代碼如下:

<!DOCTYPE html><div class="out overout" style="width:40%;height:120px; margin:0 15px;background-color:#D6EDFC;float:left;" data-mce-style="width: 40%; height: 120px; margin: 0 15px; background-color: #d6edfc; float: left;"><p style="border:1px solid red" data-mce-style="border: 1px solid red;">外部子元素</p><div class="in overout" style="width:60%;background-color:#FFCC00;margin:10px auto;" data-mce-style="width: 60%; background-color: #ffcc00; margin: 10px auto;"><p style="border:1px solid red" data-mce-style="border: 1px solid red;">內部子元素</p><p id="inshow">0</p>
    </div><p id="outshow">0</p>
</div><script type="text/javascript">

    var i = 0;
    var k = 0;

    document.querySelectorAll('.out')[0].addEventListener('mouseout',function(e){
        document.querySelectorAll("#inshow")[0].textContent = (++i)
       e.stopPropagation();
    },false)

   document.querySelectorAll('.in')[0].addEventListener('mouseout',function(){
       document.querySelectorAll("#outshow")[0].textContent = (++k)
    },false)

</script>

我們發現一個問題mouseout事件:

1.無法阻止冒泡
2.在內部的子元素上也會觸發

同樣的問題還有mouseover事件,那么在stopPropagation方法失效的情況下我們要如何停止冒泡呢?

1.為了阻止mouseover和mouseout的反復觸發,這里要用到event對象的一個屬性relatedTarget,這個屬性就是用來判斷 mouseover和mouseout事件目標節點的相關節點的屬性。簡單的來說就是當觸發mouseover事件時,relatedTarget屬性代表的就是鼠標剛剛離開的那個節點,當觸發mouseout事件時它代表的是鼠標移向的那個對象。由于MSIE不支持這個屬性,不過它有代替的屬性,分別是 fromElement和toElement。
2.有了這個屬性,我們就能夠清楚的知道我們的鼠標是從哪個對象移過來,又是要移動到哪里去了。這樣我們就能夠通過判斷這個相關聯的對象是否在我們要觸發事件的對象的內部,或者是不是就是這個對象本身。通過這個判斷我們就能夠合理的選擇是否真的要觸發事件。
3.這里我們還用到了一個用于檢查一個對象是否包含在另外一個對象中的方法,contains方法。MSIE和FireFox分別提供了檢查的方法,這里封裝了一個函數。

jQuery的處理也是如出一轍

復制代碼 代碼如下:

jQuery.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout",
        pointerenter: "pointerover",
        pointerleave: "pointerout"
    }, function(orig, fix) {
        jQuery.event.special[orig] = {
            delegateType: fix,
            bindType: fix,

            handle: function(event) {
                var ret,
                    target = this,
                    related = event.relatedTarget,
                    handleObj = event.handleObj;

                // For mousenter/leave call the handler if related is outside the target.
                // NB: No relatedTarget if the mouse left/entered the browser window
                if (!related || (related !== target && !jQuery.contains(target, related))) {
                    event.type = handleObj.origType;
                    ret = handleObj.handler.apply(this, arguments);
                    event.type = fix;
                }
                return ret;
            }
        };
    });

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女视频网| 欧美极品欧美精品欧美视频| 国产日韩中文字幕在线| 欧美日韩精品在线观看| 亚洲第一级黄色片| 亚洲精品一区二区久| 亚洲男人天堂久| 2020欧美日韩在线视频| 亚洲国产精品久久精品怡红院| 久久国产精品影片| 亚洲亚裔videos黑人hd| 91视频国产一区| 国产精品福利久久久| 国产精品成人观看视频国产奇米| 91精品国产综合久久香蕉| 亚洲欧洲中文天堂| 中文字幕国产精品| 久久久在线免费观看| 日韩欧美亚洲一二三区| 日韩欧美国产一区二区| 热99在线视频| 精品亚洲夜色av98在线观看| 精品福利樱桃av导航| 精品亚洲夜色av98在线观看| 亚洲最新中文字幕| 懂色av中文一区二区三区天美| 精品福利免费观看| 日韩欧美国产高清91| 亚洲成人网在线观看| 91国产视频在线播放| 欧美激情乱人伦| 国产大片精品免费永久看nba| 91精品在线国产| 亚洲男人天天操| 亚洲电影在线看| 欧美专区国产专区| 亚洲欧洲自拍偷拍| 成人在线国产精品| 97av在线影院| 国产丝袜视频一区| 中文字幕免费精品一区| 久久香蕉国产线看观看网| 97在线免费观看视频| 午夜精品视频网站| 国产精品爱久久久久久久| 欧美www在线| 中文字幕日韩免费视频| 黑人狂躁日本妞一区二区三区| 久久久亚洲欧洲日产国码aⅴ| 日韩av在线一区| 粉嫩老牛aⅴ一区二区三区| 国产性色av一区二区| 国产日韩欧美在线观看| 色综合色综合网色综合| 欧美精品成人在线| 精品国产999| 亚洲男人天堂手机在线| 日本欧美一级片| 国产精品美女www爽爽爽视频| 日韩欧美成人区| 久久久久久久激情视频| 久久久久久国产精品三级玉女聊斋| 在线观看不卡av| 久久91精品国产91久久久| 中日韩美女免费视频网站在线观看| 亚洲国产成人久久综合一区| 精品一区精品二区| 国产精品久久久久久久久久尿| 成人信息集中地欧美| 97视频在线免费观看| 久久躁狠狠躁夜夜爽| 亚洲性夜色噜噜噜7777| 国产原创欧美精品| 亚洲国产精品电影在线观看| 日韩精品有码在线观看| 97超碰国产精品女人人人爽| 欧美日韩免费观看中文| 亚洲自拍偷拍第一页| 国产亚洲人成网站在线观看| 色爱av美腿丝袜综合粉嫩av| 日韩高清不卡av| 国产精品久久一区主播| 国产精品久久久久久av| 国产成人精品视频在线| 成人免费高清完整版在线观看| 色综久久综合桃花网| 亚洲肉体裸体xxxx137| 成人h视频在线观看播放| 麻豆国产精品va在线观看不卡| 中文字幕亚洲欧美日韩在线不卡| 亚洲高清在线观看| 成人免费视频网| 欧美成人精品激情在线观看| 国产成人精品在线观看| 日韩中文字幕视频在线| 欧美在线影院在线视频| 欧美日韩性视频在线| 亚洲国产精品热久久| 欧美黄色三级网站| 国产日韩精品综合网站| 亚洲福利视频网| 亚洲自拍在线观看| 国产精品一区专区欧美日韩| 91精品国产综合久久香蕉| 日本久久久久久久| 国产精品久久久av久久久| 日韩精品有码在线观看| 欧美日韩亚洲国产一区| 91亚洲午夜在线| 亚洲成人中文字幕| 成人黄色av网站| 欧美精品videosex性欧美| 日韩国产精品一区| 国产欧美日韩精品丝袜高跟鞋| 成人av在线网址| 成人午夜两性视频| 国产精品香蕉国产| 久久久久999| 午夜精品久久久久久久久久久久久| 国产成人在线一区| 国产精品久久久久久久app| 奇米一区二区三区四区久久| 欧美激情伊人电影| 日韩精品久久久久久久玫瑰园| 日本久久久久久| 亚洲精品综合久久中文字幕| 日韩电影在线观看中文字幕| 91成品人片a无限观看| 欧美亚洲成人xxx| 亚洲影视九九影院在线观看| 疯狂欧美牲乱大交777| 国产成人精品一区二区在线| 国产成人久久久| 中文字幕自拍vr一区二区三区| 九九久久综合网站| 亚洲自拍偷拍色图| 久久久国产一区| 亚洲男人天堂九九视频| 91九色精品视频| 国产一区二区黄| 国产成人精彩在线视频九色| 日韩精品免费电影| 91精品国产91久久久久福利| 国产一区二区三区精品久久久| 国内伊人久久久久久网站视频| 久久在线精品视频| 久久久在线视频| xxx一区二区| 国产精品美腿一区在线看| 欧美成人一二三| 欧美激情国内偷拍| 日韩中文字幕精品| 91久久嫩草影院一区二区| 精品福利免费观看| 欧美成人sm免费视频| 欧美大片网站在线观看| 中文字幕精品www乱入免费视频| 狠狠躁夜夜躁人人爽超碰91| 尤物九九久久国产精品的特点| 国产精品自拍网| 国产成人+综合亚洲+天堂| 日韩一级裸体免费视频| 91精品国产乱码久久久久久蜜臀| 亚洲午夜未删减在线观看|