什么是事件代理?什么是事件委托?

简介: 什么是事件代理?什么是事件委托?

事件代理(Event Delegation)或事件委托(Event Delegation/Event Bubbling)是一种在 JavaScript 中用于处理 DOM(文档对象模型)事件的技术。这种方法的主要思想是,不是直接在目标元素上绑定事件监听器,而是在其父元素或祖先元素上绑定监听器,以处理目标元素的事件。

事件代理利用了事件冒泡(Event Bubbling)的特性,事件冒泡是指当一个元素的事件被触发时,该事件会从最特定的元素开始,然后逐级向上传播到较为不特定的元素。因此,我们可以将事件监听器绑定在 DOM 树中较高的层级上,而不是每个需要事件响应的元素上。

这样做的好处有很多,比如可以减少内存占用,提高性能,因为不需要为每个元素单独设置事件监听器。同时,当动态添加或删除子元素时,无需重复绑定或解绑事件监听器。

下面是一个简单的代码示例,展示了如何使用事件代理来处理点击事件:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件代理示例</title>
</head>
<body>
<ul id="myList">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
 
<script>
// 获取 ul 元素
const myList = document.getElementById('myList');
 
// 在 ul 上绑定 click 事件监听器
myList.addEventListener('click', function(event) {
// 检查被点击的元素是否为 li 元素
if (event.target.tagName.toLowerCase() === 'li') {
// 在控制台输出被点击的 li 元素的内容
console.log('Clicked:', event.target.textContent);
}
});
</script>
</body>
</html>

在这个示例中,我们没有直接在每个 li 元素上绑定点击事件监听器,而是在包含它们的 ul 元素上绑定了一个监听器。当点击 li 元素时,由于事件冒泡,click 事件会从 li 元素冒泡到 ul 元素,从而触发绑定在 ul 上的监听器。在监听器的回调函数中,我们通过 event.target 属性获取到被点击的元素,并检查它是否为 li 元素。如果是,则输出其内容。

相关文章
|
1月前
事件代理和事件委托
事件代理和事件委托
27 6
|
1月前
什么是事件代理?什么事件委托?
什么是事件代理?什么事件委托?
23 0
|
15天前
|
索引
事件委托是什么
事件委托是什么
|
1月前
|
JavaScript 前端开发
绑定事件的方法有几种?
绑定事件的方法有几种?
|
1月前
|
前端开发 JavaScript 容器
前端中的事件委托
前端中的事件委托
55 0
|
1月前
|
JavaScript
浅浅的说下dom的事件流和事件委托
浅浅的说下dom的事件流和事件委托
|
1月前
|
JavaScript 前端开发
【面试题】对JS中的事件冒泡、事件捕获、事件委托的理解
【面试题】对JS中的事件冒泡、事件捕获、事件委托的理解
|
9月前
|
前端开发 JavaScript 容器
前端小知识:事件委托及其应用
本文通过实际案例介绍前端中的事件委托及其应用。
59 0
|
10月前
|
前端开发
事件委托
事件委托
50 0