2

我在一个元素上有一个mousedown事件处理程序:img

$('#some_image').bind({
    mousedown: function(e) {
        var img = e.target;
        var relpos = ???;
    }
  })

我怎样才能得到mousedown 相对 img的位置?相对,即相对于 的任何一个img角,以最简单的为准。

FWIW,我正在使用 jQuery。

(对不起这个愚蠢的问题。我想答案一定是微不足道的,但我找不到它,这让我发疯了......)

编辑:好的,这是答案:

$('#some_image').bind({
    mousedown: function(e) {
        var offset = $(this).offset();
        var relpos = [e.pageX - offset.left, e.pageY - offset.top];
        // etc.
    }
  })

实际上,我发现对于我正在做的事情,最好减去Math.round(offset.left)Math.round(offset.top)不是原始偏移量,因为后者并不总是整数(见图)。

顺便说一句,至少根据 Firebug,事件的offsetXoffsetY是未定义的,layerX甚至layerY没有在其成员中列出。

4

3 回答 3

4

我从这篇文章中得到了答案 jQuery get mouse position within an element

$("#something").click(function(e){
   var parentOffset = $(this).parent().offset(); 
   //or $(this).offset(); if you really just want the current element's offset
   var relX = e.pageX - parentOffset.left;
   var relY = e.pageY - parentOffset.top;
});
于 2012-12-03T02:13:07.803 回答
1

我想你可以使用 layerX 和 layerY。

$('#some_image').bind({
    mousedown: function(e) {
        var img = e.target;
        console.log(e.layerX+","+ e.layerY);
    }
});
于 2012-12-03T02:14:05.950 回答
1

jQuery 的事件对象具有 pageX 和 pageY 属性,它们返回鼠标指针相对于文档左边缘的位置。

因此,您只需在点击事件中获取该位置并与目标元素的位置进行比较。

官方 jQuery 文档有很好的关于鼠标位置跟踪的例子。

于 2012-12-03T02:15:10.830 回答