javascript中的事件委託(代理)
—–事件委託的原理用到的就是事件冒泡和目標元素,把事件處理器新增到父元素,等待子元素事件冒泡,並且父元素能夠通過target(IE為srcElement)判斷是哪個子元素,從而做相應處理。
傳統的事件處理:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</body>
</html>
<script>
(function () {
var oli = document.getElementsByTagName("li");
for (var i = 0; i < oli.length; i++) {
oli[i].addEventListener("click",showCon,false);
}
function showCon() {
console.log(this.innerHTML);
}
})()
</script>
事件委託
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</body>
</html>
<script>
(function(){
var oul = document.getElementsByTagName("ul")[0];
oul.addEventListener('click',showCon,false);
function showCon(e) {
e=e||window.event;
var targetElement=e.target||e.srcElement;
if(targetElement.nodeName.toLowerCase()==="li"){
console.log(targetElement.innerHTML);
}
}
})();
</script>
事件委託的優點:
1.管理的函式變少了。不需要為每個元素都新增監聽函式。對於同一個父節點下面類似的子元素,可以通過委託給父元素的監聽函式來處理事件。
2.可以方便地動態新增和修改元素,不需要因為元素的改動而修改事件繫結。
3.JavaScript和DOM節點之間的關聯變少了,這樣也就減少了因迴圈引用而帶來的記憶體洩漏發生的概率
相關文章
- JavaScript 中的閉包和事件委託JavaScript事件
- js中的事件委託JS事件
- 事件委託事件
- 委託與事件-委託詳解(一)事件
- 代理模式與Kotlin中的委託模式模式Kotlin
- 事件模型和事件委託事件模型
- jquery中如何使用事件委託?jQuery事件
- 好程式設計師分享JavaScript事件委託代理和函式封裝詳解程式設計師JavaScript事件函式封裝
- wpf移除事件委託事件
- JS事件流和事件委託JS事件
- Js 事件原理與事件委託JS事件
- 事件的捕獲、冒泡、委託事件
- 委託與事件-事件詳解(二)事件
- JQuery7:事件委託jQuery事件
- C# - 委託與事件C#事件
- C#委託與事件C#事件
- c# 委託和事件C#事件
- [JavaScript] 事件委託以及 Vue 列表迴圈事件繫結的效能最佳化JavaScript事件Vue
- 對js事件委託的瞭解JS事件
- js--事件流、事件委託、事件階段JS事件
- 觀察者模式與.Net Framework中的委託與事件模式Framework事件
- 徹底搞清楚c#中的委託和事件C#事件
- 事件委託詳解最新版事件
- .NET委託,事件和Lambda表示式事件
- 詳解C#委託與事件C#事件
- C#基礎之委託,事件C#事件
- c#中的委託C#
- 詳解C#委託和事件(二)C#事件
- 詳解C#委託和事件(一)C#事件
- 來個簡單的事件委託 冒個泡事件
- ios中的多播委託iOS
- 要小心 JavaScript 的事件代理JavaScript事件
- kotlin代理模式就是這麼簡單(委託)Kotlin模式
- C#規範整理·泛型委託事件C#泛型事件
- C#.Net築基-解密委託與事件C#解密事件
- # 委託
- 委託
- 通過釋出訂閱模式實現的事件委託模式事件
- .NET進階篇02-Delegate委託、Event事件事件