91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS中如何實現事件委托

發布時間:2021-08-19 09:15:36 來源:億速云 閱讀:131 作者:小新 欄目:web開發

這篇文章主要介紹了JS中如何實現事件委托,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

事件委托(也叫事件代理),其實這個問題也簡單,要想弄明白事件委托,我們先要把事件冒泡的機制搞清楚。舉個事件冒泡的例子:

<ul>
    <li>點擊</li>
</ul>
<script>
    var ul=document.getElementsByTagName('ul')[0];
    var li=document.getElementsByTagName('li')[0];
    ul.addEventListener('click', function(){
      alert('我是ul,我被點擊了');
    }, false);
    li.addEventListener('click', function(){
      alert('我是li,我被點擊了');
    }, false);
</script>

在這段代碼中,當我們點擊li的時候出發了li的click事件,但是在這時,ul的click事件也被觸發了,這就是事件的冒泡。搞明白這個之后,我們就可以來說事件委托了,既然事件能從子元素(li)冒泡的父元素(ul)身上,那么我們就可以給ul自己加一個click事件,把所有li的事件都委托給了我們的父級(ul)身上,可能到這里有些朋友還是不明白這個事件委托到底有什么用,我們在舉一個事件委托的實例來說明一下:

<ul>
    <li>點擊1</li>
    <li>點擊2</li>
    <li>點擊3</li>
    <li>點擊4</li>
    <li>點擊5</li>
</ul>
<script>
    //使用事件委托的代碼
    var ul=document.getElementsByTagName('ul')[0];
    ul.addEventListener('click', function(e){
      alert(e.target.innerHTML);
    }, false);
    //不使用事件委托,循環給li添加click事件
    var li=document.getElementsByTagName('li')
    for(var i=0;i<li.length;i++){
      li[i].onclick=function(){
        alert(this.innerHTML);
      }
    }
</script>

我們以上代碼把事件委托給了ul,只給ul增加點擊事件,在瀏覽器中運行點擊對應的li會彈出li對應的innerHTML,這個function(e){};中的e這個參數實際上就是當前我們點擊li時,系統傳給我們的一些事件信息,e.target實際上指的就是當前我們點擊的這個li,在這里我們每次彈出的都是當前點擊對象的innerHTML,這就是一個簡單的事件委托的案例。

而事件委托對于我們優化代碼意義是非常大的,我們都知道,頻繁的dom操作是非常耗費性能的,現在ul里邊是5個li,我們假如不用事件委托實現上面代碼所作的事情,就需要用for循環,給每個li都寫一個click事件,這樣一來dom操作就比較多了,如果是10個li呢,100個甚至更多呢,單不說dom操作影響的性能,li過多for循環自身就會占用大量的事件。如果利用事件委托,既避免了for循環耗費的性能,又省去了繁多的dom操作耗費的性能。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“JS中如何實現事件委托”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

洪洞县| 伊金霍洛旗| 体育| 田林县| 甘孜县| 莱芜市| 通州市| 垫江县| 嵊州市| 浦县| 武乡县| 武宣县| 临漳县| 衡南县| 夏邑县| 蓬安县| 理塘县| 会同县| 安阳市| 滕州市| 五大连池市| 龙南县| 定南县| 容城县| 图木舒克市| 密云县| 金阳县| 翁源县| 杭锦后旗| 泽州县| 兴宁市| 乌拉特中旗| 合水县| 政和县| 惠安县| 旬阳县| 芜湖县| 云林县| 安徽省| 江门市| 古蔺县|