2011-03-03 162 views
18

在javascript中我希望能够确定在其中单击鼠标时HTML页面的元素。请注意,这些元素不会附加事件侦听器。获取发生鼠标点击的html元素?

基本上是:光标停在某个页面,用户点击鼠标,捕获鼠标点击事件,得到发生掣子元件。这可能吗?

我想到的一种方法是获取click事件的x,y坐标,迭代DOM获取每个元素的位置,并找到包含click事件的最内层元素。听起来有点冗长 - 所以想知道是否有另一种方式。

回答

17

http://www.quirksmode.org是一个很好的网站,解释了很多事件。

特别是对于你的问题:Event properties - Which HTML element is the target of the event?

在Internet Explorer中,您可以从event对象中获取元素event.srcElement[docs]以及其他所有浏览器中的元素event.target[docs]

另请参阅我链接到的示例中的“Safari bug”解决方法(尽管我不知道它是否仍然存在和/或Safari的哪个版本)。

+2

谢谢,完美的答案,很好地引用。 – 2011-03-03 14:18:03

+0

不幸的是,这篇文章中的链接已被打破。 – f1lt3r 2015-09-28 17:39:43

+1

@Alistair:这是一个暂时性的问题:https://twitter.com/ppk/status/648419502728835072 – 2015-09-28 22:14:46

5

尝试event.target。该页面上有一个示例显示如何使用它。

+4

也许最好链接到[MDC的文档](https://developer.mozilla.org/en/DOM/event.target),因为这与jQuery无关,可能导致错误结论。 – 2011-03-03 14:05:02

+0

我已经联系到jQuery的例子,因为event.target不能在IE浏览器,你需要event.srcElement那里。 – Douglas 2011-03-03 14:20:00