我正在尝试将一个简单的mousedown eventlistener添加到DIV
。 DIV
有一个子节点IMG
。但是,当mousedown事件触发时,事件的target
和srcElement
属性引用IMG
,而不是DIV
节点。没有任何事件属性引用DIV
。处理程序是通用的,并且期望事件中的某个实际节点,因此失败(它错误地尝试对IMG
元素进行操作)。
我已经尝试了设置元素的onmousedown
属性,以及调用元素的.addEventListener('mousedown', f, true)
,我希望通过阅读文档true
将事件直接发送到DIV
没有先将其发送到任何子节点。然而,据报道,孩子仍然是唯一接受此事件的元素。我也试过传递false
而不是true
而没有任何变化。
DIV
只添加了一个事件处理程序,IMG
或其他任何地方都没有其他事件处理程序。
在过去,我没有足够通用的代码,要求它能够确切地知道哪个元素已经注册了它。我如何获得这些信息?
答案 0 :(得分:2)
您可以使用event.currentTarget
:
在事件遍历时标识事件的当前目标 DOM。它总是引用事件处理程序的元素 附加到而不是标识元素的
event.target
事件发生了。
或者,在大多数浏览器上,您可以使用this
。但是,我认为这是一种从未标准化的DOM0行为。
答案 1 :(得分:0)
如果您可以将图像放到DIV节点的背景中,这个问题就很容易解决了。