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

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

事件代理(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 元素。如果是,则输出其内容。

相关文章
|
6月前
事件代理和事件委托
事件代理和事件委托
47 6
|
6月前
什么是事件代理?什么事件委托?
什么是事件代理?什么事件委托?
42 0
|
11天前
|
JavaScript 前端开发
事件冒泡和事件捕获的原理和区别
【10月更文挑战第15天】事件冒泡和事件捕获的原理和区别
|
2月前
|
监控 JavaScript 前端开发
|
2月前
|
JavaScript 前端开发 API
你真的理解事件绑定、事件冒泡和事件委托吗?
该文章详细解释了JavaScript中的事件绑定机制、事件冒泡行为以及事件委托技术,并通过实例帮助读者更好地理解和应用这些概念。
|
2月前
|
存储 JavaScript 前端开发
js事件冒泡和事件委托
事件冒泡是指事件从最内层元素开始逐级向上传播至祖先元素的过程,默认情况下,点击子元素时会先触发自身的事件处理程序,再依次向上触发父元素的处理程序。事件委托则是在父元素上设置事件处理程序,利用事件冒泡机制处理子元素的事件,以此减少内存消耗和提高性能,特别适用于处理大量动态子元素的情况。其区别在于事件冒泡是事件传播机制的一部分,而事件委托是编程技巧,通过在父元素上绑定事件处理程序来简化子元素的事件处理。
21 0
|
5月前
|
索引
事件委托是什么
事件委托是什么
|
6月前
|
前端开发 JavaScript 容器
前端中的事件委托
前端中的事件委托
73 0
|
6月前
|
JavaScript 前端开发
【面试题】对JS中的事件冒泡、事件捕获、事件委托的理解
【面试题】对JS中的事件冒泡、事件捕获、事件委托的理解