当前位置:首页 > JavaScript

js事件委托实现

2026-02-02 23:55:31JavaScript

事件委托的原理

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

实现步骤

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

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

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

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

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

js事件委托实现

完整代码示例

<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
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…