e.target和e.currentTarget之间的区别

Art*_*mix 263 events event-handling actionscript-3

我不明白它们的区别,它们看起来都是一样的,但我猜它们不是.

任何何时使用其中一个或另一个的例子都将受到赞赏.

Ben*_*ale 416

e.target是触发事件调度程序触发的内容,e.currentTarget也是您为侦听器分配的内容.

  • 简单,准确的答案 - 应该是被接受的答案. (22认同)
  • 这是一个很好的例子:http://joequery.me/code/event-target-vs-event-currenttarget-30-seconds/ (6认同)

Zev*_*van 198

Ben的答案是完全正确的 - 所以记住他的想法.就是我要告诉你的是不是一个完整的解释,但它是一个非常简单的方法来记住如何e.target,e.currentTarget相对于鼠标事件,并显示列表中的工作:

e.target=鼠标下的东西(正如ben所说......引发事件的事情). e.currentTarget=点之前的东西......(见下文)

因此,如果一个实例名称为"btns"的剪辑中有10个按钮,则执行以下操作:

btns.addEventListener(MouseEvent.MOUSE_OVER, onOver);
// btns = the thing before the dot of an addEventListener call
function onOver(e:MouseEvent):void{
  trace(e.target.name, e.currentTarget.name);
}
Run Code Online (Sandbox Code Playgroud)

e.target将是10个按钮之一,e.currentTarget将永远是"btns"剪辑.

值得注意的是,如果您将MouseEvent更改为ROLL_OVER或将该属性设置btns.mouseChildren为false,e.target并且e.currentTarget两者都将始终为"btns".

  • 不,`currentTarget`始终是侦听事件的对象; `target`是接收事件的实际目标.每个事件冒泡,目标接收事件并且它在显示列表中冒泡.(或者事件捕获的另一种方式) (96认同)
  • 如果是一个孩子派遣了这个事件那么是目标就是孩子们.通常,您将需要使用e.currentTarget,因为这是您为侦听器分配的内容.但是在某些情况下,例如上面列出的一个Zevan,你想在一个有多个孩子的容器上有一个监听器,你就可以使用e.target来查看调度该事件的孩子. (4认同)
  • 换句话说,target是childs,currentTarget是容器. (2认同)

Ale*_*x K 26

e.currentTarget始终是事件实际绑定的元素.e.target是事件源自的元素,因此e.target可能是子项e.currentTarget,或者e.target可能是=== e.currentTarget,具体取决于标记的结构.


Mar*_*ari 21

我喜欢视觉答案.

在此输入图像描述

单击时#btn,会调用两个事件处理程序,并输出您在图片中看到的内容.

演示:https://jsfiddle.net/ujhe1key/

  • 啊好吧,对不起标记。答案仍然适用于两者。 (2认同)

Cay*_*Cay 8

值得注意的是,event.target可能很有用,例如,使用单个侦听器来触发不同的操作.假设你有一个典型的"菜单"精灵,里面有10个按钮,所以不要这样做:

menu.button1.addEventListener(MouseEvent.CLICK, doAction1);
menu.button2.addEventListener(MouseEvent.CLICK, doAction2);
etc...
Run Code Online (Sandbox Code Playgroud)

你可以简单地做:

menu.addEventListener(MouseEvent.CLICK, doAction);
Run Code Online (Sandbox Code Playgroud)

并根据event.target(使用它的name属性等等)在doAction(event)中触发不同的动作


Mut*_*amy 8

target  is the element that triggered the event (e.g., the user clicked on)

currenttarget is the element that the event listener is attached to.
Run Code Online (Sandbox Code Playgroud)


小智 5

举个例子:

var body = document.body,
    btn = document.getElementById( 'id' );
body.addEventListener( 'click', function( event ) {
    console.log( event.currentTarget === body );
    console.log( event.target === btn );
}, false );
Run Code Online (Sandbox Code Playgroud)

当您单击“btn”时,将出现“真”和“真”!