reportview触发click事件_事件捕获和事件冒泡

1bdd19f9cc3bfe9a1b4106ff080c78cf.png

1.概念

事件捕获:Document —> 触发节点

事件冒泡:触发节点 —> Document

btn.addEventListener('click',fn,true); 捕获阶段调用fn

btn.addEventListener('click',fn); 冒泡阶段调用fn

2.运用冒泡点击一次触发三个

var son = document.querySelector('.son');  
son.addEventListener('click', function() {  
    alert('son');  
});  
var father = document.querySelector('.father');  
father.addEventListener('click', function() {  
    alert('father');  
});  
document.addEventListener('click', function() {  
    alert('document');  
}) 

3.事件委托

给ul注册点击事件,点击li,事件会冒泡到ul上,ul有注册事件,就会触发事件监听器。于给多个li注册点击事件相比,我们只操作了一次DOM,提高了程序的性能。

var ul = document.querySelector('ul'); 
ul.addEventListener('click', function(e) { 
    // e.target 这个可以得到我们点击的对象 
    e.target.style.backgroundColor = 'pink'; 
}) 

4.阻止事件冒泡

son.addEventListener('click', function(e) {  
    alert('son'); 
    e.stopPropagation(); // 阻止冒泡(标准) 
    e.cancelBubble = true; // 阻止冒泡(非标准) 
}, false);

兼容处理(少用)

if(e && e.stopPropagation){ e.stopPropagation();

}else{

window.event.cancelBubble = true;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值