e.target的认识
最近在做特效的过程中遇到了获取目标事件源的情况,一般情况下我们获取目标事件源都是谁是调用者谁就是事件源,但是当有批量的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