成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript 事件冒泡與事件委托

用戶(hù)83 / 2283人閱讀

摘要:事件冒泡的事件流叫做事件冒泡。事件委托又稱(chēng)事件代理。對(duì)事件處理程序過(guò)多問(wèn)題的解決方案就是事件委托。所有用到按鈕的事件多數(shù)鼠標(biāo)和鍵盤(pán)事件都適合采用事件委托。

事件冒泡

IE的事件流叫做事件冒泡。顧名思義當(dāng)事件發(fā)生后,事件就開(kāi)始從里向外傳播,查看下方代碼:


    
        
        Document
    
    
        

如果點(diǎn)擊頁(yè)面中的

元素,那么這個(gè) chick 事件就會(huì)按照如下順序傳播:

click 事件 在 直系DOM 樹(shù)的每一級(jí)節(jié)點(diǎn)都會(huì)發(fā)生(自下而上),直到 document 對(duì)象。

事件委托

又稱(chēng)事件代理。對(duì)“事件處理程序過(guò)多”問(wèn)題的解決方案就是事件委托。事件委托利用了事件冒泡,只指定一個(gè)父類(lèi)事件處理程序,就可以管理某一類(lèi)型的所有子類(lèi)元素事件。

三個(gè)

  • 被單擊,按照傳統(tǒng)方式,會(huì)給他們多帶帶添加事件:

        document.getElementById("sayHi").onClick(function(){...})
        

    點(diǎn)擊事件不多的情況下還好,若是所有元素都采用這樣的方式,結(jié)果就會(huì)有數(shù)不清的代碼用于添加事件處理。就好比一萬(wàn)個(gè)人全擠到公司前臺(tái)去拿快遞,那場(chǎng)面,蔚為壯觀??!但是把快遞放到前臺(tái),前臺(tái)接收,然后分批次派送,就會(huì)舒服很多:

        document.getElementById("myList").onClick(function(ev){
            var e = ev || window.event;
            var target = e.target;
            switch (target.id) {
                case "goSth":
                    ...
                    break;
                case "doSth":
                    ...
                    break;
                ...
            }
        })
    

    上面是用事件委托的方式,子元素是帶有事件效果的,我們可以發(fā)現(xiàn),當(dāng)用事件委托的時(shí)候,根本就不需要去遍歷元素的子節(jié)點(diǎn),只需要給父級(jí)元素添加事件就好了,子元素點(diǎn)擊,會(huì)通過(guò)以事件冒泡的方式激活父元素已添加的相同事件,減少了很多 js 對(duì)于 dom 的事件操作,占用更少的內(nèi)存,這大概是事件委托的精髓所在。

    所有用到按鈕的事件(多數(shù)鼠標(biāo)和鍵盤(pán)事件)都適合采用事件委托。

  • 文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94920.html

    相關(guān)文章

    • Javascript事件

      摘要:見(jiàn)下圖更直觀在事件流中,事件的目標(biāo)在捕獲階段不會(huì)接受到事件,這意味著在捕獲階段,事件從到后就停止了。下一個(gè)階段是目標(biāo)階段,于是事件在上發(fā)生,并在事件處理中被看成是冒泡階段的一部分,然后,冒泡階段發(fā)生,事件又傳回。 CONTENTS DOM事件流 事件冒泡 阻止冒泡 事件捕獲 事件委托 DOM事件流 1.什么是事件流? 事件流所描述的是從頁(yè)面中接受事件的順序 2.DOM事件流的三個(gè)階...

      baiy 評(píng)論0 收藏0
    • Javascript事件

      摘要:見(jiàn)下圖更直觀在事件流中,事件的目標(biāo)在捕獲階段不會(huì)接受到事件,這意味著在捕獲階段,事件從到后就停止了。下一個(gè)階段是目標(biāo)階段,于是事件在上發(fā)生,并在事件處理中被看成是冒泡階段的一部分,然后,冒泡階段發(fā)生,事件又傳回。 CONTENTS DOM事件流 事件冒泡 阻止冒泡 事件捕獲 事件委托 DOM事件流 1.什么是事件流? 事件流所描述的是從頁(yè)面中接受事件的順序 2.DOM事件流的三個(gè)階...

      luffyZh 評(píng)論0 收藏0
    • Javascript事件

      摘要:見(jiàn)下圖更直觀在事件流中,事件的目標(biāo)在捕獲階段不會(huì)接受到事件,這意味著在捕獲階段,事件從到后就停止了。下一個(gè)階段是目標(biāo)階段,于是事件在上發(fā)生,并在事件處理中被看成是冒泡階段的一部分,然后,冒泡階段發(fā)生,事件又傳回。 CONTENTS DOM事件流 事件冒泡 阻止冒泡 事件捕獲 事件委托 DOM事件流 1.什么是事件流? 事件流所描述的是從頁(yè)面中接受事件的順序 2.DOM事件流的三個(gè)階...

      pcChao 評(píng)論0 收藏0
    • JavaScript 事件詳解

      摘要:事件監(jiān)聽(tīng)函數(shù)標(biāo)準(zhǔn)的事件監(jiān)聽(tīng)函數(shù)如下上面的示例表示先獲得表示節(jié)點(diǎn)的對(duì)象,然后在這個(gè)對(duì)象上面添加了一個(gè)事件監(jiān)聽(tīng)器,當(dāng)監(jiān)聽(tīng)到事件發(fā)生時(shí),則調(diào)用回調(diào)函數(shù),即在控制臺(tái)輸出。 JavaScript 事件解讀 1. 事件基本概念 事件是指在文檔或者瀏覽器中發(fā)生的一些特定交互瞬間,比如打開(kāi)某一個(gè)網(wǎng)頁(yè),瀏覽器加載完成后會(huì)觸發(fā) load 事件,當(dāng)鼠標(biāo)懸浮于某一個(gè)元素上時(shí)會(huì)觸發(fā) hover 事件,當(dāng)鼠標(biāo)點(diǎn)擊...

      Object 評(píng)論0 收藏0
    • 理解Javascript中的事件綁定事件委托

      摘要:最近在深入實(shí)踐中,遇到了一些問(wèn)題,比如我需要為動(dòng)態(tài)創(chuàng)建的元素綁定事件,那么普通的事件綁定就不行了,于是通過(guò)上網(wǎng)查資料了解到事件委托,因此想總結(jié)一下中的事件綁定與事件委托。事件冒泡認(rèn)為事件促發(fā)的最深層元素首先接收事件。 最近在深入實(shí)踐js中,遇到了一些問(wèn)題,比如我需要為動(dòng)態(tài)創(chuàng)建的DOM元素綁定事件,那么普通的事件綁定就不行了,于是通過(guò)上網(wǎng)查資料了解到事件委托,因此想總結(jié)一下js中的事件綁...

      lewinlee 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    最新活動(dòng)
    閱讀需要支付1元查看
    <