2011-03-03 40 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