当前位置:首页 > JavaScript

js实现事件委托

2026-03-01 02:07:21JavaScript

事件委托的基本概念

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

实现事件委托的步骤

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

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

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

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);

实际应用示例

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

js实现事件委托

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实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

vue实现点击事件

vue实现点击事件

Vue 中实现点击事件的方法 在 Vue 中可以通过 v-on 指令或简写 @ 来绑定点击事件。以下是几种常见的实现方式: 直接在模板中绑定方法 <template> <but…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…