首页 > 编程知识 正文

js如何使用addeventlistener,js拦截事件触发的操作

时间:2023-05-05 01:15:46 阅读:282518 作者:4793

结论

element.addEventListener(event, function[, useCapture])

event:事件名称,如clickfunction:指定要事件触发时执行的函数,可以传入事件参数useCapture:可选。布尔值,指定事件是否在捕获或冒泡阶段执行。
默认false:在冒泡阶段执行指定事件
true:在捕获阶段执行事件

event.stopPropagation():阻止事件传播,用于function(event){}中

图解捕获与冒泡

实例:aa里面有个bb,bb里面有个cc,当点击cc时会发生什么?

实例代码 <div id="aa"> aa <div id="bb"> bb <div id="cc">cc</div> </div> </div> function print(e){ console.log(this.id); } aa.addEventListener('click',print);//第三个参数默认为false bb.addEventListener('click',print); cc.addEventListener('click',print); div{ display: flex; align-items: center; justify-content: center; } #aa{ margin:100px 0 0 400px; background-color: #f0ad4e; height:300px; width:300px; } #bb{ background-color: #4078c0; height:200px; width:200px; } #cc{ background-color: #42b983; height:100px; width:100px; } 讲解 当点击cc时,按cc>bb>aa依次捕获,再按aa>bb>cc依次冒泡;因为第三个参数(useCapture)默认为false,所以在冒泡阶段执行各自click函数,结果如下:
cc
bb
aa当js修改为 function print(e){ console.log(this.id); } aa.addEventListener('click',print,true);//第三个参数默认为false bb.addEventListener('click',print,true); cc.addEventListener('click',print,true);

再点击cc时,按cc>bb>aa依次捕获,再按aa>bb>cc依次冒泡;因为第三个参数(useCapture)为true,所以在捕获阶段执行各自click函数,结果如下:
aa
bb
cc
3. 当js修改为

function print(e){ e.stopPropagation();//执行完此函数后,该事件不再继续传播 console.log(this.id); } aa.addEventListener('click',print,true);//第三个参数默认为false bb.addEventListener('click',print,true); cc.addEventListener('click',print,true);

再点击cc时,捕获cc,执行cc的click函数, 因为print函数中有e.stopPropagation(),所以执行完该函数后,click事件不再传播.结果如下:
aa

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。