Javascript:获取相对于父元素的鼠标位置

Pet*_*rim 9 javascript mouse-position

有没有办法让鼠标位置相对于它的父元素?

假设我有一个结构:

<div id="parent">
    <span class="dot"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

当我将鼠标放在span元素上时,我需要获得相对于其父元素(<div id="parent">)的位置.PageX/ClientX给我相对于页面/客户区的位置,所以它对我不起作用.

Mat*_*nen 12

从鼠标位置(pageX; pageY)中减去父元素(offsetLeft; offsetTop)的位置以获得相对位置.如果您有多个级别的偏移,请记住将offsetParent考虑在内.

例如:

element.addEventListener("mousedown", function (e) {
  let x = e.pageX - parent.offsetLeft;
  let y = e.pageY - parent.offsetTop;

  console.log(x, y);
});
Run Code Online (Sandbox Code Playgroud)

element您的内部元素在哪里接收事件,并且parent是您想要的坐标参考.

  • @罗伯特似乎有人在我的答案中添加了代码,但没有实际阅读答案并添加了错误的代码。我现在用更好的方法更新了它。 (2认同)

cit*_*kid 5

jquery offset()方法处理父定位,所以

function onsomemouseevent(e) {
    var x = e.pageX - $(e.target).offset().left;
}
Run Code Online (Sandbox Code Playgroud)

是普通的浏览器抽象jquery.

  • 当您使用带有子元素的元素时,使用 e.currentTarget 也可能很有用 (2认同)