-
this 是事件绑定的元素(绑定这个事件处理函数的元素) 。
-
e.target 是事件触发的元素。
-
e.currentTarget 是事件绑定的元素(绑定这个事件处理函数的元素),即与this相同
通常情况下target 和 this是一致的
但有一种情况不同,那就是在事件冒泡时(父子元素有相同事件,单击子元素,父元素的事件处理函数也会被触发执行),
这时候this指向的是父元素,因为它是绑定事件的元素对象,
而target指向的是子元素,因为他是触发事件的那个具体元素对象。总结 :
e.target 点击了哪个元素,就返回哪个元素
this 哪个元素绑定了这个点击事件,那么就返回谁
-
例子:没有冒泡的target和this
<div>123</div>
<script>
var div = document.querySelector('div');
div.addEventListener('click', function(e) {
// e.target 和 this指向的都是div
console.log(e.target);
console.log(this);
});
</script>
- 例子:事件冒泡下的e.target和this
<ul>
<li>abc</li>
<li>abc</li>
<li>abc</li>
</ul>
<script>
var ul = document.querySelector('ul');
ul.addEventListener('click', function(e) { //ul.οnclick=function(){this}
// 我们给ul 绑定了事件 那么this 就指向ul
console.log(this); // ul //(当前函数所属对象,怎么理解,看上边普通方式)
// e.target 触发了事件的对象 我们点击的是li e.target 指向的就是li
console.log(e.target); // li //(目标:目标阶段,触发的对象)
});
</script>
-
总结:
this:绑定事件的对象
e.target:触发事件的对象