当前位置:首页 > JavaScript

js事件委托实现

2026-02-02 23:55:31JavaScript

事件委托的原理

事件委托利用事件冒泡机制,将子元素的事件监听绑定到父元素上。通过事件对象的target属性识别实际触发事件的子元素,减少事件监听器的数量,提升性能。

js事件委托实现

实现步骤

绑定父元素监听器
为父元素添加事件监听,指定事件类型(如click)和回调函数。父元素需是子元素的共同祖先节点。

js事件委托实现

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

识别目标子元素
通过event.target获取实际触发事件的子元素,结合条件判断(如tagNameclassList)筛选目标。

if (event.target.classList.contains('child-class')) {
  // 处理特定子元素的逻辑
}

动态元素支持
事件委托天然支持动态添加的子元素,无需重新绑定监听器。新子元素触发事件时会冒泡到父元素。

完整代码示例

<ul id="list">
  <li class="item">Item 1</li>
  <li class="item">Item 2</li>
</ul>

<script>
  document.getElementById('list').addEventListener('click', function(event) {
    if (event.target.classList.contains('item')) {
      console.log('Clicked item:', event.target.textContent);
    }
  });

  // 动态添加的子元素自动生效
  setTimeout(() => {
    const newItem = document.createElement('li');
    newItem.className = 'item';
    newItem.textContent = 'Item 3';
    document.getElementById('list').appendChild(newItem);
  }, 1000);
</script>

注意事项

  • 使用event.currentTarget获取绑定监听器的父元素,event.target获取触发事件的原始元素。
  • 若子元素内还有嵌套结构,需通过event.target.closest('.selector')向上查找匹配的祖先元素。
  • 避免过度委托,仅对同类操作(如列表项点击)使用事件委托。

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

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js防抖和节流实现

js防抖和节流实现

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