事件委托(Event delegation)是一种提高效率的 JavaScript 编程技巧,主要用于减少事件监听器的数量,从而优化性能。这种方法的核心思想是利用事件冒泡机制,将事件监听器添加到父元素上,而不是为每个子元素单独添加事件监听器。当事件触发时,会一直沿着 DOM 结构向上冒泡,直到找到一个匹配的事件监听器为止。
事件委托的优点:
事件委托的基本原理:
target
属性判断触发事件的元素是否是我们关心的元素(即需要执行特定操作的元素)。下面是一个简单的示例:
HTML 结构:
<ul id="list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
JavaScript 代码:
// 为父元素(ul)添加事件监听器
document.getElementById('list').addEventListener('click', function(event) {
// 获取触发事件的元素(li)
const target = event.target;
// 判断触发事件的元素是否是我们关心的元素(li)
if (target.tagName === 'LI') {
console.log('Clicked on:', target.textContent);
}
});
在这个示例中,我们将点击事件监听器添加到了父元素(ul)上,而不是为每个子元素(li)单独添加事件监听器。当点击某个子元素时,事件会沿着 DOM 结构向上冒泡,触发父元素上的事件处理函数。在事件处理函数中,我们通过判断触发事件的元素(target)是否是我们关心的元素(li),来决定是否执行相应的操作。