2010-06-17 49 views
0

如果我在div上使用了一個mousemove事件處理函數,並檢查事件的layerX屬性,它會在鼠標進入該div內的定位元素(如圖像)時發生變化。jQuery event.layerX/Y不是相對於觸發事件的元素,是對的嗎?

根據the jQuery Event object documentation它應遵循W3C DOM Level 3規範。但是沒有提及the MouseEvent interface的layerX/Y屬性,所以我想知道根據規範什麼樣的行爲?

對我來說,你總是希望layerX/Y相對於觸發事件的層,如果我想要嵌套元素的layerX/Y,我會檢查事件的不同階段(冒泡)或將我的處理程序附加到該嵌套元素。

我的問題是(有點主觀):layerX/Y應該如何工作?

回答

1

我會認爲layerx/y將是具有位置(相對或絕對)的射擊元素的第一個父節點的偏移量。無論哪種方式,jQuery有發現類似這樣的位置和更好的方法也LayerX/Y不能保證在每個瀏覽器一樣,所以我不會用它

+0

謝謝你,我改變了代碼,使用()左,e.clientX – 2010-06-17 15:47:09

+0

layerX和layerY已經在Chrome V17 – rxgx 2011-10-27 05:48:58

2

你也可以使用:

var x = e.pageX - this.offsetLeft;

var y = e.pageY - this.offsetTop;

這與使用jQuery element.offset()屬性幾乎相同,但是此方法使用本地offsetTop和offsetLeft屬性。

附近的底部發現:jQuery - Tutorials: Mouse Position

+0

offsetLeft和的offsetTop被棄用element.offset的組合。相對於offsetParent,而不是頁面。你需要迭代所有的offsetParents。 – 2017-12-20 21:47:26

相關問題