谁能告诉我在JavaScript事件中的currentTarget和target属性的确切区别,以及哪个属性在哪个场景中使用?


当前回答

事件。currentTarget是事件处理程序已经归属的元素 附加的,而不是事件。目标,它标识上的元素 哪个事件发生了,哪个可能是它的后代。

来源:中数

target总是引用addEventListener前面的元素——它是事件产生的元素。 currentTarget告诉你——如果这是一个冒泡的事件——当前附加了事件监听器的元素(如果事件发生,它将触发事件处理程序)。

有关示例,请参阅这个CodePen。如果你打开开发工具并单击方块,你会看到首先div是目标和currentTarget,但是事件气泡上升到主元素-然后主元素变成了currentTarget,而div仍然是目标。注意,要发生冒泡,需要将事件侦听器附加到这两个元素。

其他回答

一个实验:

document.addEventListener("click", (e) => {
  console.log(e.target, e.currentTarget);
});
document.querySelector("p").click();

输出:

<p></p>
#document

target (<p></p>)似乎是被点击的元素,而currentTarget (#document)是监听点击事件的元素。

目标=触发事件的元素。

具有事件监听器的元素。

事件。currentTarget是事件处理程序已经归属的元素 附加的,而不是事件。目标,它标识上的元素 哪个事件发生了,哪个可能是它的后代。

来源:中数

target总是引用addEventListener前面的元素——它是事件产生的元素。 currentTarget告诉你——如果这是一个冒泡的事件——当前附加了事件监听器的元素(如果事件发生,它将触发事件处理程序)。

有关示例,请参阅这个CodePen。如果你打开开发工具并单击方块,你会看到首先div是目标和currentTarget,但是事件气泡上升到主元素-然后主元素变成了currentTarget,而div仍然是目标。注意,要发生冒泡,需要将事件侦听器附加到这两个元素。

如果这还不行,试试这个:

currentTarget中的current指的是当前。这是最新的目标,捕捉到从其他地方冒出来的事件。

默认情况下,事件冒泡。所以两者的区别是:

目标是触发事件的元素(例如,用户点击) currentTarget是事件监听器附加到的元素。