当前位置:首页 > JavaScript

js实现事件委托

2026-03-01 02:07:21JavaScript

事件委托的基本概念

事件委托是一种利用事件冒泡机制的技术,通过将事件监听器绑定到父元素而非每个子元素上,统一管理子元素的事件。这种方式能减少内存占用并动态处理新增元素。

实现事件委托的步骤

绑定父元素监听器
选择父元素(如 ul)作为事件委托的容器,监听目标事件(如 click):

js实现事件委托

document.getElementById('parent').addEventListener('click', function(event) {
  // 事件处理逻辑
});

判断目标元素
通过 event.target 获取实际触发事件的子元素,根据需求过滤非目标元素(如只处理 li):

js实现事件委托

if (event.target.tagName === 'LI') {
  console.log('子元素被点击:', event.target.textContent);
}

动态元素支持
事件委托天然支持动态添加的子元素,无需重新绑定监听器。例如新增 li 后直接触发父元素监听:

const newItem = document.createElement('li');
newItem.textContent = 'New Item';
document.getElementById('parent').appendChild(newItem);

实际应用示例

以下是一个完整的事件委托示例,实现点击列表项高亮:

document.getElementById('list').addEventListener('click', function(event) {
  if (event.target.classList.contains('item')) {
    event.target.style.backgroundColor = 'yellow';
  }
});

注意事项

  • 事件冒泡可能被 stopPropagation() 中断,需确保不阻止冒泡。
  • 复杂场景可通过 closest() 方法匹配更灵活的选择器:
    if (event.target.closest('.item')) { /* 逻辑 */ }

标签: 事件js
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…