亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)。

我們?cè)賮砜纯丛诰唧w的程序中是如何實(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注冊(cè)點(diǎn)擊事件,然后利用事件對(duì)象的 target 來找到當(dāng)前點(diǎn)擊的 li,因?yàn)辄c(diǎn)擊li,事件會(huì)冒泡到ul上,ul有注冊(cè)事件,就會(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序 開發(fā)之全局配置

    微信小程序 開發(fā)之全局配置

    這篇文章主要介紹了微信小程序 開發(fā)之全局配置的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 常用的JavaScript數(shù)組方法

    常用的JavaScript數(shù)組方法

    一說到JavaScript的數(shù)組,大家基本都能馬上想起pop()、push()、shift()、unshift()、indexof()等等,今天小編就給大家分享幾個(gè)開發(fā)中常用的js數(shù)組方法即他們的用法。需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 微信小程序 開發(fā)經(jīng)驗(yàn)整理

    微信小程序 開發(fā)經(jīng)驗(yàn)整理

    這篇文章主要介紹了微信小程序 開發(fā)經(jīng)驗(yàn)整理的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Thinkphp5微信小程序獲取用戶信息接口的實(shí)例詳解

    Thinkphp5微信小程序獲取用戶信息接口的實(shí)例詳解

    這篇文章主要介紹了Thinkphp5微信小程序獲取用戶信息接口的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Fabric.js 保存自定義屬性方法示例

    Fabric.js 保存自定義屬性方法示例

    這篇文章主要為大家介紹了Fabric.js 保存自定義屬性方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 微信小程序url與token設(shè)置詳解

    微信小程序url與token設(shè)置詳解

    這篇文章主要介紹了微信小程序url與token設(shè)置詳解的相關(guān)資料,希望通過本文能幫助到大家解決類似問題,需要的朋友可以參考下
    2017-09-09
  • JavaScript?Broadcast?Channel?API使用學(xué)習(xí)

    JavaScript?Broadcast?Channel?API使用學(xué)習(xí)

    這篇文章主要為大家介紹了JavaScript的api學(xué)習(xí)之Broadcast?Channel?API使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 解決React中的re-render問題

    解決React中的re-render問題

    這篇文章主要介紹了解決React中的re-render問題,相信很多人都遇到過。接下來給大家具體講講這個(gè)問題,需要的朋友可以參考y一下,洗碗給對(duì)你有所幫助
    2022-01-01
  • WebAssembly增強(qiáng)前端應(yīng)用技巧詳解

    WebAssembly增強(qiáng)前端應(yīng)用技巧詳解

    這篇文章主要為大家介紹了WebAssembly增強(qiáng)前端應(yīng)用技巧示例詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • JavaScript閉包c(diǎn)losure詳述

    JavaScript閉包c(diǎn)losure詳述

    這篇文章主要大家分享的是JavaScript閉包詳述,在JavaScript部分,閉包是很重要的東西,所以我們今天就閉包的相關(guān)知識(shí)做一個(gè)總結(jié),需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-12-12

最新評(píng)論