js-对event.target的认识

原创 ziyingyewu 译文 JS 86阅读 2018-08-24 10:20:07 举报

一般情况下我们获取目标事件源都是谁是调用者谁就是事件源,但是当有批量的DOM需要操作的时候,要判断哪一个dom是事件源就不是很明确了,使用e.target可以准确地获取事件源,并且在使用的过程中可以比较判断,从而实现我们的代码。
举个例子:当做一个拖拽的案例的时候,有多个事件源,但是想要知道鼠标点击的是不是我们想要的事件源的时候(例如:其他区域和事件源进行判断),我们就可以使用e.target,比较获取的事件源的Id,classname,nodename...
event.target经常使用的属性有以下几个:

event.target.nodeName     //获取事件触发元素标签name

event.target.id       //获取事件触发元素id

event.target.className    //获取事件触发元素classname

event.target.innerHTML    //获取事件触发元素的内容

在了解e.target的同时,还有一个e.currentTarget,这两个属性让人傻傻的认不清楚,我按照我的理解记录一下:
一般情况下:
e.currentTarget : 指的是绑定了事件监听的元素(可以理解为触发事件元素的父级元素)
e.target: 指的是真正触发事件的那个元素
事件冒泡是:如果绑定的事件对象子对象(比如点击页面上的button)时,e.currentTarget == e.target: 指的是真正触发事件的那个元素
                     如果绑定的事件对象是document时,e.currentTarget是document,而e.target 是btn

event.target
说明:引发事件的DOM元素。

this和event.target的区别
js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;

this和event.target的相同点
this和event.target都是dom对象,如果要使用jquey中的方法可以将他们转换为jquery对象:$(this)和$(event.target);

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复