JavaScript事件对象属性e.target和this的区别

本文通过一个简单的示例对比了事件绑定中this与e.target的不同之处。this指向绑定事件的对象,而e.target则指向实际触发事件的对象。这对于理解DOM事件流及事件处理非常重要。

前言:

Event对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
事件发生后,跟事件相关的一系列信息数据的集合都放到这个对象里面,这个对象就是事件对象event,它有很多属性和方法。
比如:

  1. 谁绑定了这个事件。
  2. 鼠标触发事件的话,会得到鼠标的相关信息,如鼠标位置。
  3. 键盘触发事件的话,会得到键盘的相关信息,如按了哪个键。
    其中事件对象属性e.target,它和this的指向有所不同。

案例:

HTML:

<div>div
    <span>span</span>
</div>

CSS:

div {
    width: 100px;
    height: 100px;
    background-color: red;
}

span {
    display: block;
    width: 50px;
    height: 50px;
    background-color: yellow;
}

预览:JS:

var div = document.querySelector('div');
div.addEventListener('click', function(e) {
    console.log(this);  // 给div绑定了事件,那么this就指向div
    console.log(e.target);  // e.target指向点击的那个对象
})

实现结果:

点击div:this返回div标签,e.target返回div标签


点击span:this返回div标签,e.target返回span标签

分析:

  1. 因为div绑定了点击事件,那么this返回的都是div
  2. 点击dive.target返回div;点击spane.target返回span

总结:

  1. this返回的是绑定事件的对象(元素);e.target返回的是触发事件的对象(元素)。
  2. 简单来说,this:哪个元素绑定了这个点击事件,就返回哪个元素;e.target:点击了哪个元素,就返回哪个元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值