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

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

前言:

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

谁绑定了这个事件。
鼠标触发事件的话,会得到鼠标的相关信息,如鼠标位置。
键盘触发事件的话,会得到键盘的相关信息,如按了哪个键。
其中事件对象属性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标签


分析:

因为div绑定了点击事件,那么this返回的都是div;

点击div,e.target返回div;点击span,e.target返回span。


总结:

this返回的是绑定事件的对象(元素);e.target返回的是触发事件的对象(元素)。

简单来说,this:哪个元素绑定了这个点击事件,就返回哪个元素;e.target:点击了哪个元素,就返回哪个元素。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_9705