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

JavaScript事件委托原理

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

一、什么是事件委托

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

舉個簡單的例子:

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

二、事件委托的原理

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

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

代碼如下所示:

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

運行結(jié)果為:

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

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

實現(xiàn)代碼為:

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


運行結(jié)果為:

成功顯示。

三、事件委托的作用

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

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

相關(guān)文章

  • 微信小程序 loading 組件實例詳解

    微信小程序 loading 組件實例詳解

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

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

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

    微信小程序 textarea 組件詳解及簡單實例

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

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

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

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

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

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

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

    詳解使用yeoman打造自己的項目腳手架

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

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

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

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

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

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

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

最新評論

锡林郭勒盟| 山阳县| 资溪县| 阳新县| 社会| 徐汇区| 松江区| 安泽县| 湖州市| 乐陵市| 大悟县| 抚远县| 阿拉善盟| 兴隆县| 石家庄市| 石林| 石嘴山市| 昂仁县| 桐梓县| 万安县| 屏东市| 油尖旺区| 洪江市| 沛县| 云林县| 涟源市| 沁源县| 虞城县| 罗城| 怀集县| 依兰县| 平罗县| 福建省| 抚松县| 株洲市| 白山市| 张掖市| 麻城市| 甘洛县| 基隆市| 玉田县|