最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中事件冒泡機制示例詳析

 更新時間:2021年06月08日 11:18:28   作者:來世做春風  
這篇文章主要給大家介紹了關于JavaScript中事件冒泡機制的相關資料,文中詳析介紹了什么是冒泡、冒泡捕獲需要以及冒泡和捕獲的具體區(qū)別,需要的的朋友可以參考下

什么是冒泡?

DOM事件流(event  flow )存在三個階段:事件捕獲階段、 處于目標階段、 事件冒泡階段。

事件捕獲(event  capturing):通俗的理解就是,當鼠標點擊或者觸發(fā)dom事件時,瀏覽器會從根節(jié)點開始由外到內進行事件傳播,即點擊了子元素,如果父元素通過事件捕獲方式注冊了對應的事件的話,會先觸發(fā)父元素綁定的事件。

事件冒泡(dubbed  bubbling):與事件捕獲恰恰相反,事件冒泡順序是由內到外進行事件傳播,直到根節(jié)點。

dom標準事件流的觸發(fā)的先后順序為:先捕獲再冒泡,即當觸發(fā)dom事件時,會先進行事件捕獲,捕獲到事件源之后通過事件傳播進行事件冒泡。不同的瀏覽器對此有著不同的實現(xiàn),IE10及以下不支持捕獲型事件,所以就少了一個事件捕獲階段,IE11、Chrome 、Firefox、Safari等瀏覽器則同時存在。

addEventListener()方法

這個方法設定一個事件監(jiān)聽器,當某一事件發(fā)生通過設定的參數(shù)執(zhí)行操作。語法是:

addEventListener(event, function, useCapture)

參數(shù) event 是必須的,表示監(jiān)聽的事件,例如 click, touchstart 等,就是之前不加前綴 on 的事件。

參數(shù) function 也是必須的,表示事件觸發(fā)后調用的函數(shù),可以是外部定義函數(shù),也可以是匿名函數(shù)。

參數(shù) useCapture 是選填的,填true或者false,用于描述事件是冒泡還是捕獲,true表示捕獲,默認的false表示冒泡。

移除事件監(jiān)聽

如果要移除 addEventListener() 添加的事件監(jiān)聽,就要使用removeEventListener(),語法是:

removeEventListener(event, function)

參數(shù)與addEventListener()一致。

兼容性

IE 8及更早的版本,和Opera 7.0及更早的版本,不支持 addEventListener() 和 removeEventListener() 方法,他們使用的是一下方法代替:

添加事件:

attachEvent(event, function)

移除事件:

**detachEvent(event, function) **

可以用以下方法解決兼容性問題:

if (div1.addEventListener) {
         div1.addEventListener('click', function () {
             console.log("支持")
         });
} else if (div1.attachEvent) {
         div1.attachEvent('onclick', function () {
             console.log("不支持")
         });
}

冒泡和捕獲的具體區(qū)別

HTML

    <div id="div1">
         <div id="div2"></div>
    </div>

JS

<script>
        var div1 = document.getElementById("div1");
        var div2 = document.getElementById("div2");
        div1.addEventListener('click',function(){
            console.log("div1--捕獲階段")
        },true);
        div2.addEventListener('click',function(){
            console.log("div2--捕獲階段")
        },true);
        div1.addEventListener('click',function(){
            console.log("div1--冒泡階段")
        });
        div2.addEventListener('click',function(){
            console.log("div2--冒泡階段")
        });
</script>

輸出結果(點擊div2的時候執(zhí)行的結果)

解決辦法

function stopBubble(e) {
         if (e && e.stopPropagation) {
                e.stopPropagation(); //因此它支持W3C的stopPropagation()方法 
         } else {
             window.event.cancelBubble = true; //否則,我們需要使用IE的方式來取消事件冒泡 
         }
}

 

總結

到此這篇關于JavaScript中事件冒泡機制的文章就介紹到這了,更多相關JavaScript事件冒泡內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JS短信驗證碼倒計時功能的實現(xiàn)(沒有驗證碼,只有倒計時)

    JS短信驗證碼倒計時功能的實現(xiàn)(沒有驗證碼,只有倒計時)

    最近接了個項目,其中有這樣的需求:當用戶想要獲取驗證碼時,就點擊免費獲取驗證碼 ,然后開始倒計時,倒計時期間按鈕文字為剩余時間x秒,且不可按狀態(tài),倒計時結束后,按鈕更改為點擊重新發(fā)送,下面給大家分享js短信驗證碼倒計時實現(xiàn)代碼
    2016-10-10
  • 詳解JavaScript中原始數(shù)據(jù)類型Symbol的使用

    詳解JavaScript中原始數(shù)據(jù)類型Symbol的使用

    Symbol是es6引入的一個新的原始數(shù)據(jù)類型,是一個獨一無二的值。這篇文章主要為大家介紹了JavaScript中原始數(shù)據(jù)類型Symbol的使用,感興趣的可以了解一下
    2023-02-02
  • 淺談javascript如何獲取文件后綴名

    淺談javascript如何獲取文件后綴名

    這篇文章主要介紹了淺談javascript如何獲取文件后綴名,文章通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • layui的數(shù)據(jù)表格+springmvc實現(xiàn)搜索功能的例子

    layui的數(shù)據(jù)表格+springmvc實現(xiàn)搜索功能的例子

    今天小編就為大家分享一篇layui的數(shù)據(jù)表格+springmvc實現(xiàn)搜索功能的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 怎樣用Javascript實現(xiàn)策略模式

    怎樣用Javascript實現(xiàn)策略模式

    這篇文章主要介紹了JavaScript設計模式之策略模式,想學習設計模式的同學,一定要看一下
    2021-04-04
  • JS定義類的六種方式詳解

    JS定義類的六種方式詳解

    下面小編就為大家?guī)硪黄狫S定義類的六種方式詳解。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-05-05
  • js正則表達式校驗指定字符串的方法

    js正則表達式校驗指定字符串的方法

    今天小編就為大家分享一篇js正則表達式校驗指定字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Javascript使用post方法提交數(shù)據(jù)實例

    Javascript使用post方法提交數(shù)據(jù)實例

    這篇文章主要介紹了Javascript使用post方法提交數(shù)據(jù),實例分析了javascript實現(xiàn)post提交數(shù)據(jù)的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • JavaScript防止表單重復提交的方法

    JavaScript防止表單重復提交的方法

    在web開發(fā)中,防止表單的重復提交是一個非常重要的環(huán)節(jié)。重復提交會導致數(shù)據(jù)混亂,甚至可能導致系統(tǒng)崩潰,今天我們將帶領大家從小白級別到大神級別的程序員,一起來學習如何在實際項目中避免表單的重復提交
    2023-04-04
  • JavaScript實現(xiàn)電燈開關小案例

    JavaScript實現(xiàn)電燈開關小案例

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)電燈開關小案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論

巴塘县| 龙陵县| 汶上县| 洛扎县| 沁水县| 托克托县| 弋阳县| 南安市| 东至县| 普陀区| 军事| 大关县| 陆丰市| 霞浦县| 华安县| 尼勒克县| 怀来县| 巴南区| 广水市| 泗洪县| 察隅县| 平南县| 固安县| 河池市| 五河县| 云龙县| 石首市| 久治县| 青田县| 腾冲县| 鸡泽县| 荣成市| 美姑县| 敖汉旗| 望城县| 察隅县| 长治市| 虹口区| 林州市| 和硕县| 正定县|