JavaScript中event对象中currentTarget和target的区别

简述

名称功能
currentTarget其事件处理程序当前正在处理事件的那个元素
target事件的目标

区别

在事件处理程序内部, 对象 this 始终等于 currentTarget 的值, 而 target 则只包含事件的实际目标. 如果直接将事件处理程序指定给了目标元素, 则this \ currentTarget \ target 包含相同的值.

如果上面的句子没有弄懂, 不要紧, 请细心看下去.

var btn = document.getElementById('myBtn');
btn.onclick = function(event) {
    alert(event.currentTarget === this); //true
    alert(event.target === this); //true;
}

这个例子检测了 currentTargettarget 的值. 由于click事件的目标是按钮. 因此这三个值是相等的. 如果事件处理程序存在于按钮父节点中 ( 例如 document.body ), 那么这些值是不相同的.

//接着上面的例子, 由于js事件机制冒泡到了body
document.body.onclick = function(event) {
    alert(event.currentTarget === document.body); //true
    alert(this === document.body); //true
    alert(event.target === document.getElementById('myBtn')); //true;
}

当单击这个例子的按钮时, thiscurrentTarget 都等于 document.body , 因为事件处理程序是注册到这个元素上的. 然而, target 元素却等于按钮元素, 因为它是click事件真正的目标.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值