javascript mousedown事件报告子节点而不是预期节点

时间:2014-09-05 00:16:11

标签: javascript javascript-events

我正在尝试将一个简单的mousedown eventlistener添加到DIVDIV有一个子节点IMG。但是,当mousedown事件触发时,事件的targetsrcElement属性引用IMG,而不是DIV节点。没有任何事件属性引用DIV。处理程序是通用的,并且期望事件中的某个实际节点,因此失败(它错误地尝试对IMG元素进行操作)。

我已经尝试了设置元素的onmousedown属性,以及调用元素的.addEventListener('mousedown', f, true),我希望通过阅读文档true将事件直接发送到DIV没有先将其发送到任何子节点。然而,据报道,孩子仍然是唯一接受此事件的元素。我也试过传递false而不是true而没有任何变化。

DIV只添加了一个事件处理程序,IMG或其他任何地方都没有其他事件处理程序。

在过去,我没有足够通用的代码,要求它能够确切地知道哪个元素已经注册了它。我如何获得这些信息?

2 个答案:

答案 0 :(得分:2)

您可以使用event.currentTarget

  

在事件遍历时标识事件的当前目标   DOM。它总是引用事件处理程序的元素   附加到而不是标识元素的event.target   事件发生了。

或者,在大多数浏览器上,您可以使用this。但是,我认为这是一种从未标准化的DOM0行为。

答案 1 :(得分:0)

如果您可以将图像放到DIV节点的背景中,这个问题就很容易解决了。