事件代理 浅谈

参考文章:http://t.csdnimg.cn/sSKZ4

是什么

事件代理,又叫事件委托,是 JavaScript 中常用绑定事件的常用技巧。就是把原本需要绑定到子元素的事件委托给父元素或祖先元素来管理的技术。

原理

原理是事件冒泡
当子元素触发特定事件时,该事件不会直接在子元素上进行处理,而是会冒泡到父元素或祖先元素,并在那里进行处理。

优点

  1. 可以减少事件处理函数的数量,节省内存,提高性能。例如使用事件委托的方式将点击事件绑定到 ul 标签上,就可以实现监听所有 li 标签,简洁、高效。
  2. 可以动态添加或删除子元素而无需重新绑定事件处理函数。在网页中,有时我们需要动态增加或移除页面中的元素,使用事件委托不需要再为新增的元素绑定事件,也不需要为删除的元素解绑事件。

具体案例

以下是一个使用事件代理的示例代码:

<!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>
  .container {
    border: 1px solid #ccc;
    padding: 20px;
  }
  .item {
    cursor: pointer;
    margin-bottom: 10px;
  }
</style>
</head>
<body>

<div class="container" id="container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
</div>

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

// 添加事件监听器到父元素上
container.addEventListener('click', function(event) {
  // 检查点击的元素是否为子元素
  if (event.target.classList.contains('item')) {
    // 如果是子元素,输出其文本内容
    console.log('Clicked item:', event.target.textContent);
  }
});
</script>

</body>
</html>

在这里插入图片描述在这里插入图片描述

在这个示例中,我们将点击事件绑定在父元素 .container 上。当点击子元素 .item 时,事件会冒泡到父元素,然后在父元素上进行处理。这样做的好处是无论我们添加或删除子元素,点击事件都能被正确地处理,而不需要重新绑定事件处理函数。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值