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

JavaScript事件委托原理

 更新時(shí)間:2022年01月24日 15:26:02   作者:bear*6  
這篇文章主要介紹了JavaScript事件委托原理,?事件委托也稱為事件代理。就是利用事件冒泡,把子元素的事件都綁定到父元素上。如果子元素阻止了事件冒泡,那么委托就無法實(shí)現(xiàn),下面我們一起來學(xué)習(xí)文章的具體詳細(xì)內(nèi)容吧

一、什么是事件委托

事件委托也稱為事件代理。就是利用事件冒泡,把子元素的事件都綁定到父元素上。如果子元素阻止了事件冒泡,那么委托就無法實(shí)現(xiàn)。

舉個(gè)簡單的例子:

例如快遞員有100個(gè)快遞要分別送給100個(gè)學(xué)生, 如果一個(gè)個(gè)的送花費(fèi)時(shí)間較長。同時(shí)每個(gè)學(xué)生領(lǐng)取的時(shí)候,也需要排隊(duì)領(lǐng)取,也花費(fèi)時(shí)間較長,應(yīng)該怎樣操作呢?這時(shí)快遞員可以把100個(gè)快遞委托給班主任,班主任把這些快遞放到辦公室,同學(xué)們下課自行領(lǐng)取即可。這樣的話,快遞員省事,同學(xué)們領(lǐng)取也更方便。這個(gè)過程就是一個(gè)委托事件。

二、事件委托的原理

不是每個(gè)子節(jié)點(diǎn)單獨(dú)設(shè)置事件監(jiān)聽器,而是事件監(jiān)聽器設(shè)置在其父節(jié)點(diǎn)上,然后利用冒泡原理影響設(shè)置每個(gè)子節(jié)點(diǎn)。

我們再來看看在具體的程序中是如何實(shí)現(xiàn)的吧!
比如,我們現(xiàn)在有一個(gè)無序列表,在無序列表里面有五個(gè)li,我們想要給每個(gè)li添加一個(gè)點(diǎn)擊事件,這個(gè)時(shí)候,我們常規(guī)操作是通過循環(huán)給每個(gè)li添加點(diǎn)擊事件。

代碼如下所示:

<body>
    <ul>
        <li>111111</li>
        <li>222222</li>
        <li>333333</li>
        <li>444444</li>
        <li>555555</li>
    </ul>
    <script>
        var li = document.querySelectorAll('li');
        for(var i=0;i<li.length;i++){
            li[i].onclick = function(){
                this.style.color = 'green';
            }
        }
    </script>
</body>

運(yùn)行結(jié)果為:

這種方法的確可以實(shí)現(xiàn)我們的點(diǎn)擊操作,但是這個(gè)過程中,由于每次都要給li添加點(diǎn)擊事件,造成訪問DOM的次數(shù)過多,會(huì)延長整個(gè)頁面的交互就緒時(shí)間。

所以,這里,我們就可以用到事件委托,即給ul注冊點(diǎn)擊事件,然后利用事件對象的 target 來找到當(dāng)前點(diǎn)擊的 li,因?yàn)辄c(diǎn)擊li,事件會(huì)冒泡到ul上,ul有注冊事件,就會(huì)觸發(fā)事件監(jiān)聽器。

實(shí)現(xiàn)代碼為:

<script>
        var ul = document.querySelector('ul');
        ul.addEventListener('click',function(e){
            e.target.style.color = 'orange';
        })
    </script>


運(yùn)行結(jié)果為:

成功顯示。

三、事件委托的作用

通過上面的操作,我們可以得到:在事件委托中,我們只操作一次 DOM ,大大的提高了程序的性能。

到此這篇關(guān)于JavaScript事件委托原理的文章就介紹到這了,更多相關(guān)JavaScript事件委托內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序 loading 組件實(shí)例詳解

    微信小程序 loading 組件實(shí)例詳解

    這篇文章主要介紹了微信小程序 loading 組件實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Electron學(xué)習(xí)應(yīng)用程序打包實(shí)例詳解

    Electron學(xué)習(xí)應(yīng)用程序打包實(shí)例詳解

    這篇文章主要介紹了Electron學(xué)習(xí)應(yīng)用程序打包實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 微信小程序 textarea 組件詳解及簡單實(shí)例

    微信小程序 textarea 組件詳解及簡單實(shí)例

    這篇文章主要介紹了微信小程序 textarea 組件詳解及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • js 數(shù)組 fill() 填充方法

    js 數(shù)組 fill() 填充方法

    這篇文章主要介紹了js 數(shù)組 fill() 的填充方法,初始化數(shù)組的方法,但是初始化數(shù)組之后,數(shù)組中的每一項(xiàng)元素默認(rèn)為 empty 空位占位,如何對數(shù)組這些空位添加默認(rèn)的元素,ES6提供了 fill() 方法實(shí)現(xiàn)這一操作。本文總結(jié)數(shù)組 fill() 方法的詳細(xì)使用,需要的朋友可以參考一下
    2021-10-10
  • JS前端同源策略和跨域及防抖節(jié)流詳解

    JS前端同源策略和跨域及防抖節(jié)流詳解

    這篇文章主要為大家介紹了JS前端同源策略和跨域及防抖節(jié)流詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • JavaScript設(shè)計(jì)模式之單例模式應(yīng)用場景案例詳解

    JavaScript設(shè)計(jì)模式之單例模式應(yīng)用場景案例詳解

    這篇文章主要為大家介紹了JavaScript中單例模式的應(yīng)用場景案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 詳解使用yeoman打造自己的項(xiàng)目腳手架

    詳解使用yeoman打造自己的項(xiàng)目腳手架

    這篇文章主要為大家介紹了使用yeoman打造自己的項(xiàng)目腳手架實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 微信小程序 wxapp內(nèi)容組件 icon詳細(xì)介紹

    微信小程序 wxapp內(nèi)容組件 icon詳細(xì)介紹

    這篇文章主要介紹了微信小程序 wxapp內(nèi)容組件 icon詳細(xì)介紹的相關(guān)資料,并附簡單實(shí)例,需要的朋友可以參考下
    2016-10-10
  • 微信小程序 wxapp導(dǎo)航 navigator詳解

    微信小程序 wxapp導(dǎo)航 navigator詳解

    這篇文章主要介紹了微信小程序 wxapp導(dǎo)航 navigator詳解的相關(guān)資料,并附簡單實(shí)例代碼,需要的朋友可以參考下
    2016-10-10
  • js題解LeetCode1051 高度檢查器哈希表對比

    js題解LeetCode1051 高度檢查器哈希表對比

    這篇文章主要為大家介紹了JS題解LeetCode1051 高度檢查器哈希表對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論

金平| 桦川县| 辽阳县| 耿马| 元朗区| 江安县| 桐梓县| 高碑店市| 泗阳县| 闽侯县| 诏安县| 怀仁县| 磐安县| 阿坝| 宽城| 平南县| 壤塘县| 平和县| 尉犁县| 陕西省| 华宁县| 肥乡县| 祁东县| 合肥市| 大兴区| 石首市| 嘉义市| 福鼎市| 嘉禾县| 静安区| 丹江口市| 同江市| 京山县| 雷山县| 铜山县| 象山县| 乳山市| 耒阳市| 鹿泉市| 涿鹿县| 泽普县|