当前位置: 首页 > 科技观察

e.target和e.currentTarget有什么区别?你知道吗?

时间:2023-03-15 15:15:01 科技观察

背景大家都在开发中经常和DOM事件打交道,经常会用到e.target和e.currentTarget这两个对象,但是很多人甚至不知道这两个对象有关联。有什么区别~~~Bubble&capture当你触发一个元素的事件时,事件从该元素的祖先元素向下传递,这个过程就是捕获,到达这个元素后,会发送给它的祖先元素传播起来,这个过程冒泡了>addEventListeneraddEventListener是给元素绑定事件的方法。它接收三个参数:false:默认,表示冒泡时绑定true:表示捕获时先绑定第一个参数:绑定的事件名称第二个参数:要执行的函数第三个参数:target¤tTargetfalse我们将事件绑定到四个div元素,而addEventListener的第三个参数没有设置,则默认设置const=document.getElementById('a')constb=document.getElementById('b')constc=document.getElementById('c')constd=document。getElementById('d')a.addEventListener('click',(e)=>{const{target,currentTarget}=econsole.log(`targetis${target.id}`)console.log(`currentTargetis${currentTarget.id}`)})b.addEventListener('click',(e)=>{const{target,currentTarget}=econsole.log(`targetis${target.id}`)console.log(`currentTarget是${currentTarget.id}`)})c.addEventListener('click',(e)=>{const{target,currentTarget}=econsole.log(`targetis${target.id}`)console.log(`currentTargetis${currentTarget.id}`)})d.addEventListener('click',(e)=>{const{target,currentTarget}=econsole.log(`targetis${target.id}`)console.log(`currentTargetis${currentTarget.id}`)})现在我们点击查看输出。我们可以看到trigger是d,执行的元素是冒泡的顺序。第三个参数设置为true,我们看输出结果,可以看到trigger是d,执行元素是捕获的顺序target是dcurrentTarget是atarget是dcurrentTarget是btarget是dcurrentTarget是ctarget是dcurrentTarget是d的区别我们可以得出结论:e.target:触发事件的元素e.currentTarget:绑定事件的元素