JavaScript DOM操作:如何实现事件委托?

简介: JavaScript DOM操作:如何实现事件委托?

事件委托是一种在处理事件时,将事件处理程序绑定到一个共同的祖先元素上,而不是在每个子元素上都绑定独立的事件处理程序。这样可以减少事件处理程序的数量,提高性能,并使代码更容易维护。

实现事件委托的基本思想是利用事件冒泡机制,将事件处理交给祖先元素,然后通过事件对象的 target 属性判断事件发生在哪个子元素上。

以下是一个简单的例子,演示如何使用事件委托:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Event Delegation Example</title>
  <style>
    ul {
    
      list-style: none;
      padding: 0;
    }
    li {
    
      cursor: pointer;
    }
    li:hover {
    
      background-color: #eee;
    }
  </style>
</head>
<body>

<ul id="parentList">
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>

<script>
  // 获取父元素
  var parentList = document.getElementById('parentList');

  // 添加事件监听器到父元素
  parentList.addEventListener('click', function(event) {
    
    // 判断事件是否发生在 li 元素上
    if (event.target.tagName === 'LI') {
    
      // 执行相应的处理逻辑
      console.log('Clicked on', event.target.textContent);
    }
  });
</script>

</body>
</html>

在上面的例子中,事件监听器被添加到 ul 元素上,而不是每个 li 元素上。当用户点击 ul 元素中的任何一个 li 元素时,事件会冒泡到 ul 元素,并触发事件处理程序。通过检查事件对象的 target 属性,可以确定事件发生在哪个子元素上,从而执行相应的处理逻辑。

使用事件委托的好处包括减少事件处理程序的数量、减小内存占用,特别是当有大量子元素时,以及简化代码结构。

相关文章
|
4天前
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
9 1
|
4天前
|
存储 JavaScript 前端开发
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
5 1
|
1天前
|
缓存 JavaScript API
js【详解】DOM
js【详解】DOM
5 0
|
4天前
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(一)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(一)
7 0
|
4天前
|
存储 JavaScript 前端开发
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(二)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(二)
6 0
|
4天前
|
JavaScript 前端开发
js/javascript 操作对象【全】(含常用的操作对象的lodash)
js/javascript 操作对象【全】(含常用的操作对象的lodash)
5 0
|
4天前
|
存储 JavaScript 前端开发
js/javascript 操作数组【全】(含常用的操作数组的lodash)
js/javascript 操作数组【全】(含常用的操作数组的lodash)
4 0
|
5天前
|
JavaScript
js 解析和操作树 —— 获取树的深度、提取并统计树的所有的节点和叶子节点、添加节点、修改节点、删除节点
js 解析和操作树 —— 获取树的深度、提取并统计树的所有的节点和叶子节点、添加节点、修改节点、删除节点
10 0
|
5天前
|
JavaScript 前端开发
JavaScript 遍历DOM
JavaScript 遍历DOM
5 0
|
2月前
|
XML JavaScript 前端开发
Javaweb之javascript的DOM对象的详细解析
1.5.3 DOM对象 1.5.3.1 DOM介绍 DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。
50 0