js 事件流和事件代理(事件委托)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

    </style>
</head>
<body>
<div id = 't1'>
  <div id = 't2'>
    <input type="button" value="开始冒泡" id = 't3'/>
    <input type="button" value="开始冒泡" id = 't9'/>
  </div>
</div>
</body>
</html>
<script>

  /*
   * js事件流,参考js基础DOM事件ppt
   * 三个阶段 :事件捕获,处于目标,冒泡阶段
   */

  let target1 = document.getElementById('t1')
  target1.addEventListener('click', function(e) {
    console.log('t1',e.target,e.currentTarget,e.eventPhase,e.type)
  })

  let target2 = document.getElementById('t2')
  target2.addEventListener('click', function(e) {
    console.log('t2',e.target,e.currentTarget,e.eventPhase,e.type)
  })

  let target3 = document.getElementById('t3')
  target3.addEventListener('click', function(e) {
    console.log('t3',e.target,e.currentTarget,e.eventPhase,e.type)
  })


  /*
   * js事件委托:利用冒泡原理,将子元素触发的事件绑定在父元素上
   */

  let targetAgency = document.getElementById('t1')
  targetAgency.addEventListener('click', function(e) {
    // console.log('t1',e.target,e.currentTarget,e.eventPhase,e.type)
    console.log('事件委托到t1处理')
    let target = e.target;
    if(target.id === 't3'){
      console.log('t3')
    }
    if(target.id === 't9'){
      console.log('t9')
    }
  })


  /*
   * 阻止默认事件:e.preventDefault();
   * 阻止冒泡:e.stopPropagation()
   * return false; 上述两种都阻止,同时还可用于返回需要的值
   */

</script>

 添加事件监听函数的方式

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值