e.target和e. currentarget的区别

我不明白有什么区别,它们看起来是一样的,但我想它们不是。

任何关于何时使用其中一个或另一个的例子都将是非常感谢的。

129696 次浏览

e.target是触发事件分派器的触发器,而e.currentTarget是你分配给监听器的对象。

本的回答完全正确,所以要记住他说的话。我将要告诉你的不是一个完整的解释,但它是一个非常简单的方法来记住e.targete.currentTarget如何与鼠标事件和显示列表相关的工作:

e.target =鼠标下面的东西(如ben所说…触发事件的东西)。 e.currentTarget =点前面的东西…(见下文)< / p >

因此,如果你在一个实例名为“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);
}

e.target将是10个按钮之一,而e.currentTarget将始终是“btns”剪辑。

值得注意的是,如果你将MouseEvent更改为ROLL_OVER或将属性btns.mouseChildren设置为false, e.targete.currentTarget将始终为“btns”。

那件事值得注意。Target可能很有用,例如,用于使用单个侦听器来触发不同的操作。假设你有一个典型的“菜单”精灵,里面有10个按钮,所以不要这样做:

menu.button1.addEventListener(MouseEvent.CLICK, doAction1);
menu.button2.addEventListener(MouseEvent.CLICK, doAction2);
etc...

你可以简单地做:

menu.addEventListener(MouseEvent.CLICK, doAction);

并根据事件在doAction(event)中触发不同的操作。目标(使用它的name属性,等等…)

. currenttarget总是返回事件监听器被添加到的组件。

另一方面,e.target可以是组件本身,也可以是接收事件的任何直接子代、孙子代、孙子代等等。换句话说,e.target返回位于Display List层次结构顶部的组件,该组件必须位于子层次结构或组件本身中。

一种用途是当你在Canvas中有几个图像,你想在组件中拖动图像。你可以在Canvas上添加一个监听器,在监听器中你可以编写以下代码来确保Canvas不会被拖拽。

function dragImageOnly(e:MouseEvent):void
{
if(e.target==e.currentTarget)
{
return;
}
else
{
Image(e.target).startDrag();
}
}

举个例子:

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

当你点击'btn'时,会出现'true'和'true' !

e.currentTarget始终是事件实际绑定的元素。e.target是事件产生的元素,所以e.target可以是e.currentTarget的子元素,或者e.target可以是=== e.currentTarget,这取决于你的标记是如何构造的。

  • E.target是元素,你可以点击它
  • currenttarget是添加了事件监听器的元素。

如果你点击按钮的子元素,最好使用currentTarget来检测按钮属性,在CH中使用e.target有时会有问题。

我喜欢直观的答案。

enter image description here

当您单击#btn时,将调用两个事件处理程序,它们将输出您在图片中看到的内容。

演示在这里:https://jsfiddle.net/ujhe1key/

e.currentTarget是注册事件的元素(父),e.target是事件指向的节点(子)。

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.