参考博客:https://blog.csdn.net/weixin_42458965/article/details/105687926
https://www.cnblogs.com/guojiabing/p/12213332.html
-
target
是事件触发的真实元素。(点击!) -
currentTarget
是事件绑定的元素。(绑定!) -
事件处理函数中的
this
指向是中为currentTarget
event对象中 会有两个对象。一个是target,一个currentTarget。
currentTarget是 box.onlick= function(e){}。绑定的事件。也就是 事件监听器的对象。
target。实际上点击的对象。
1 绑定在水果上, 绑定的对象是水果。
如果点击水果。那么点击的对象是水果 == 绑定的水果。
如果点击的是 苹果,那么对点击的对象是苹果 !== 绑定的水果。
<body> <ul id="box"> 水果 <Li id="apple">苹果</Li> <li>香蕉</li> <li>桃子</li> </ul> </body> <script type="text/javascript"> var box = document.getElementById('box'); var apple = document.getElementById('apple'); //绑定在父元素box上(如果点击apple这个li时) box.onclick = function (e){ console.log(e.target); // <li id="apple">苹果</li> console.log(e.currentTarget); //<ul id="box">...</ul> console.log(this); //<ul id="box">...</ul> console.log(e.currentTarget===this); //true console.log(e.target === e.currentTarget); //false console.log(e.target === this); //false } </script>
2 如果绑定的是苹果,那么绑定的就是苹果。 currentTarget==苹果。
无论怎么点击都是苹果。
<body> <ul id="box"> 水果 <Li id="apple">苹果</Li> <li>香蕉</li> <li>桃子</li> </ul> </body> <script type="text/javascript"> var box = document.getElementById('box'); var apple = document.getElementById('apple'); //绑定在父元素box上(如果点击apple这个li时) box.onclick = function (e){ console.log(e.target); // <li id="apple">苹果</li> console.log(e.currentTarget); //<ul id="box">...</ul> console.log(this); //<ul id="box">...</ul> console.log(e.currentTarget===this); //true console.log(e.target === e.currentTarget); //false console.log(e.target === this); //false } //直接绑定在目标元素apple上 apple.onclick = function (e){ console.log(e.target); //<li id="apple">苹果</li> console.log(e.currentTarget); //<li id="apple">苹果</li> console.log(this); //<li id="apple">苹果</li> console.log(e.target === e.currentTarget); //true console.log(e.target === this); //true } </script>