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事件
- JavaScript 中的閉包和事件委託JavaScript事件
- 理解JavaScript中的事件路由冒泡過程及委託代理機制JavaScript事件路由
- JavaScript 事件委託詳解JavaScript事件
- JavaScript事件委託的技術原理JavaScript事件
- jquery-中的事件委託jQuery事件
- 事件委託事件
- javascript事件委託程式碼例項JavaScript事件
- JavaScript進階系列06,事件委託JavaScript事件
- 委託、事件--委託例項篇事件
- C# 中的委託和事件C#事件
- 委託與事件-委託詳解(一)事件
- jQuery 事件委託jQuery事件
- C#中的委託和事件(續)C#事件
- 事件模型和事件委託事件模型
- 代理模式與Kotlin中的委託模式模式Kotlin
- jquery中如何使用事件委託?jQuery事件
- JavaScript 事件委託詳解 | 掘金技術徵文JavaScript事件
- C# 事件委託C#事件
- C#事件委託事件
- 重中之重:委託與事件事件
- C# 委託事件C#事件
- Js 事件原理與事件委託JS事件
- JS事件流和事件委託JS事件
- 委託、Lambda表示式、事件系列01,委託是什麼,委託的基本用法,委託的Method和Target屬性事件
- 好程式設計師分享JavaScript事件委託代理和函式封裝詳解程式設計師JavaScript事件函式封裝
- 事件的捕獲、冒泡、委託事件
- Zepto事件委託的小坑事件
- js 事件的冒泡和委託JS事件
- 委託、Lambda表示式、事件系列07,使用EventHandler委託事件
- javascript什麼是事件委託簡單介紹JavaScript事件
- 委託、Lambda表示式、事件系列04,委託鏈是怎樣形成的, 多播委託, 呼叫委託鏈方法,委託鏈異常處理事件
- JQuery7:事件委託jQuery事件
- C#委託與事件C#事件
- C# 事件 vs 委託C#事件
- C# - 委託與事件C#事件
- c# 委託和事件C#事件
- 委託與事件-事件詳解(二)事件