2010-06-17 36 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

相关问题