站長資訊網
        最全最豐富的資訊網站

        javascript事件委托是什么意思

        在javascript中,事件委托也稱為事件托管或事件代理,就是把目標節點的事件綁定到祖先節點上;它是利用事件冒泡原理,管理某一類型的所有事件,利用父元素來代表子元素的某一類型事件的處理方式。

        javascript事件委托是什么意思

        本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

        在 JavaScript 中,事件委托(delegate)也稱為事件托管或事件代理,是利用事件冒泡原理,管理某一類型的所有事件,利用父元素來代表子元素的某一類型事件的處理方式。

        這樣做的好處:優化代碼,提升運行性能,真正把 HTML 和 JavaScript 分離,也能防止出現在動態添加或刪除節點過程中注冊的事件丟失的現象。

        示例1

        下面示例使用一般方法為列表結構中每個列表項目綁定 click 事件,單擊列表項目,將彈出提示對話框,提示當前節點包含的文本信息。但是,當我們為列表框動態添加列表項目之后,新添加的列表項目沒有綁定 click 事件,這與我們的愿望相反。

        <button id="btn">添加列表項目</button> <ul id="list">     <li>列表項目1</li>     <li>列表項目2</li>     <li>列表項目3</li> </ul> <script>     var ul = document.getElementById("list");     var lis = ul.getElementsByTagName("li");     for (var i = 0; i < lis.length; i ++) {         lis[i].addEventListener('cluick', function (e) {             var e = e || window.event;             var target = e.target || e.srcElement;             alert(e.target.innerHTML);         }, false);     }     var i = 4;     var btn = document.getElementById("btn");     btn.addEventListener("click", function() {         var li = document.createElement("li");         li.innerHTML = "項目列表" + i++;         ul.appendChild(li);     }); </script>

        示例2

        下面示例借助事件委托技巧,利用事件傳播機制,在列表框 ul 元素上綁定 click 事件,當事件傳播到父節點 ul 上時,捕獲 click 事件,然后在事件處理函數中檢測當前事件響應節點類型,如果是 li 元素,則進一步執行下面代碼,否則跳出事件處理函數,結束響應。

        <button id="btn">添加項目列表</button> <ul id="list">     <li>列表項目1</li>     <li>列表項目2</li>     <li>列表項目3</li> </ul> <script>     var ul = document.getElementById("list");     ul.addEventListener('click', function(e) {         var e = e || window.event;         var target = e.target || e.srcElement;         if (e.target && e.target.nodeName.toUpperCase()=="LI") {             alert(e.target.innerHTML);         }     }, false);     var i = 4;     var btn = document.getElementById("btn");     btn.addEventListener("click", function () {         var li = document.createElement("li");         li.innerHTML = "項目列表" + i++;         ul.appendChild(li);     }); </script>

        當頁面存在大量元素并且每個元素注冊了一個或多個事件時,可能會影響性能。訪問和修改更過的 DOM 節點時,程序就會更慢;特別是事件連接過程都發生在 load(或 DOMContentReady)事件中時,對任何一個富交互網頁來說,這都是一個繁忙的時間段。另外,瀏覽器需要保存每個事件句柄的記錄,也會占用

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久精品国产亚洲AV麻豆网站| 国产精品福利自产拍在线观看| 亚洲韩国精品无码一区二区三区 | 国产精品国产三级国产普通话 | 99精品一区二区三区无码吞精| 欧美黑人巨大videos精品| 精品无人区麻豆乱码1区2区 | 精品国产成人在线| 久久免费精品视频| 国产成人久久精品激情| 亚洲精品高清无码视频| 四虎精品亚洲一区二区三区| 国产色婷婷精品综合在线| 国产成人精品日本亚洲11| 精品国际久久久久999波多野| 亚洲av永久无码精品古装片| 午夜精品久久影院蜜桃| 久久精品亚洲乱码伦伦中文 | 国产精品网址你懂的| 久久99精品久久只有精品 | 黑人无码精品又粗又大又长 | 91麻豆精品视频在线观看| 精品欧洲av无码一区二区| 亚洲AV永久无码精品水牛影视| 日韩精品一区二区三区影院| 精品国产香蕉伊思人在线在线亚洲一区二区 | 久久国产精品国产自线拍免费 | HEYZO无码综合国产精品| 精品久久久久久国产潘金莲| 久久精品一本到99热免费| 无码人妻精品中文字幕| 四虎国产成人永久精品免费 | 久夜色精品国产一区二区三区| 精品91自产拍在线观看| 精品露脸国产偷人在视频| 精品一久久香蕉国产线看播放| 国产原创精品 正在播放| 国产三级精品三级在线观看| 久99久无码精品视频免费播放| 牛牛在线精品观看免费正| 亚洲国产成人a精品不卡在线|