js return与stopPropagation阻止事件冒泡区别以及addEventListener

事件冒泡

当事件发生后,这个事件就要开始传播。为什么要传播呢?因为事件源本身并没有处理事件的能力。例如我们点击一个按钮时,就会产生一个click事件,但这个按钮本身不能处理这个事件,事件必须从这个按钮传播出去,从而到达能够处理这个事件的代码中(例如我们给按钮的onclick属性赋一个函数的名字,就是让这个函数去处理该按钮的click事件)。


引用的百度百科,但好像跟我想要理解的事件冒泡还是有些不能理解。上面好像介绍了事件冒泡。每个事件都会产生冒泡,在javascript里,经常需要阻止事件冒泡。到底又是为什么 要阻止。

需要阻止事件冒泡一般是在什么情况呢,好好理了一下代码,


多次冒泡场景

在下面的html代码结构中,有两个元素需要绑定事件,我用jquery测试的,当然也可以直接js原生.click=function(){}

  1. a#bnt
  2. div#goods

点击goods box,a标签以外的区域会正常传递事件

当点击a的时候,会先传递a绑定的事件,但是a同属于div#goods区域,这时事件会继续向上传递,也就是2次冒泡出来,导致依次执行两个元素的所绑定的事件

当然在实际项目中很少会产生事件冒泡的尴尬

<div id="goods" style="width: 500px;height: 200px;background: #336699">
    <a href="http://baidu.com" id="bnt" style="color: #fff">click prop</a>
</div>

<script src="jquery.js">
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值