麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

JavaScript 事件委托/事件代理

2024-04-27 15:16:25
字體:
來源:轉載
供稿:網(wǎng)友

簡介

根據(jù)幾個概念了解 javaScript 事件委托:

事件(event):這是一個抽象的概念。定義一個對象在特定狀態(tài)下所執(zhí)行的動作。(自己定義的,網(wǎng)上找不到比較理想的定義。如果誰有更好的定義方式請留言。)例如:onclick事件、onmouSEOver事件、onmouseout事件等。委托(delegate):請求別人幫自己做事。例子: 情況一:A、B、C三人在一家公司。周一他們需要取快遞(綁定事件 - 取快遞),快遞送到了公司(觸發(fā)事件)。他們?nèi)硕汲鋈ト】爝f了(執(zhí)行操作)。 情況二:他們?nèi)硕嘉星芭_幫忙代簽(委托事件)。快遞統(tǒng)一由前臺代簽。這樣即使來了新同事D,同樣也可以收到快遞(執(zhí)行操作)。Javascript 事件委托:又稱為事件代理。利用事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。

事件冒泡

事件捕獲:當某個元素觸發(fā)某個事件(如onclick),頂層對象document就會發(fā)出一個事件流,隨著DOM樹的節(jié)點向目標元素節(jié)點流去,直到到達事件真正發(fā)生的目標元素。在這個過程中,事件相應的監(jiān)聽函數(shù)是不會被觸發(fā)的。事件冒泡:事件捕獲到達目標函數(shù)之后,執(zhí)行目標元素該事件相應的處理函數(shù)。如果沒有綁定監(jiān)聽函數(shù),那就不執(zhí)行。開始從目標元素開始,往頂層元素傳播。途中如果有節(jié)點綁定了相應的事件處理函數(shù),這些函數(shù)都會被依次觸發(fā)。如果想阻止事件起泡,可以使用 e.stopPRopagation()(Firefox)或者e.cancelBubble=true(IE)來組織事件的冒泡傳播。

使用

如下:在父類中添加click事件,當點擊子類的時候通過冒泡原理觸發(fā)父類事件。

<!-- html頁面 --><ul id="parent-list"> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> <li>Item 4</li></ul>JQuery: // delegate 的方法需要三個參數(shù),一個選擇器,一個事件名稱,和事件處理函數(shù)$("#parent-list").delegate("li", "click", function(){ if (this.nodeName.toLowerCase() == 'li') { alert(this.innerHTML); }});$("#parent-list").bind('click', function(e) { var el = e.target; if (el.nodeName.toLowerCase() == 'li') { alert(el.innerHTML); }});$("#parent-list").click(function(e) { var el = e.target; if (el.nodeName.toLowerCase() == 'li') { alert(el.innerHTML); }});JavaScript:window.onload = function() {   var oUl = document.getElementById("parent-list"); oUl.onclick = function(ev) {     var ev = ev || window.event;     var target = ev.target || ev.srcElement;    if (target.nodeName.toLowerCase() == 'li') { alert(target.innerHTML);     }   }}// addEventListener() 方法用于向指定元素添加事件句柄。window.onload = function() {   var oUl = document.getElementById("parent-list"); oUl.addEventListener('click', function() { var ev = ev || window.event;     var target = ev.target || ev.srcElement; if (target.nodeName.toLowerCase() == 'li') {  alert(target.innerHTML);     }  });}

優(yōu)缺點:

優(yōu)點: 1、節(jié)省內(nèi)存占用,減少事件注冊,提高性能。 2、可以實現(xiàn)當新增子對象時無需再次對其綁定事件,對于動態(tài)內(nèi)容部分尤為合適

缺點:事件代理的應用常用應該僅限于上述需求下,如果把所有事件都用代理就可能會出現(xiàn)事件誤判,即本不應用觸發(fā)事件的被綁上了事件。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 在线看免费观看av | 欧美1区2区在线观看 | 国产一区日韩精品 | 黄视频免费在线 | 欧美一级美国一级 | 国产在线1区 | 免费国产精品视频 | 一级在线 | 久久人人爽人人爽人人片av高请 | 精品国产精品久久 | 成人国产精品一区二区毛片在线 | 成人综合免费视频 | 久久综合久久精品 | 国产精品伦视频看免费三 | 亚洲一区二区在线免费 | 福利一区二区三区视频在线观看 | av电影直播| 欧美一区二区三区久久精品视 | 九色国产| 视频一区 在线 | 欧美国产成人在线 | 国产高潮失禁喷水爽到抽搐视频 | 在线成人免费观看www | 午夜精品福利在线观看 | 国产又粗又爽又深的免费视频 | 国产一区二区精品在线观看 | 成人情欲视频在线看免费 | 欧美ab| 免费欧美精品 | 精品久久久久久 | 久久生活片| 国产91av视频 | 欧美日韩国产一区二区三区在线观看 | 九九热在线视频观看 | 国产精品视频久久久 | 午夜久久久精品一区二区三区 | 国产一区二区视频在线播放 | 精国品产一区二区三区有限公司 | 日韩视频在线观看免费 | 久久99精品久久久久久青青日本 | 嫩草影院在线观看网站成人 |