使用jQuery获取鼠标的X/Y坐标单击图像

Ron*_*lev 97 jquery

我想使用jQuery来获取图像上单击事件的X/Y坐标.坐标应该相对于图像,而不是相对于整个页面

Bri*_*nna 173

您可以使用pageXpageY获取鼠标在窗口中的位置.您还可以使用jQuery offset来获取元素的位置.

因此,它应该是pageX - offset.left距离图像左侧pageY - offset.top多远以及距离图像顶部多远.

这是一个例子:

$(document).ready(function() {
  $('img').click(function(e) {
    var offset = $(this).offset();
    alert(e.pageX - offset.left);
    alert(e.pageY - offset.top);
  });
});
Run Code Online (Sandbox Code Playgroud)

我在这里做了一个实例,这里是来源.

要计算从底部或右边的距离,您必须使用jQuery widthheight方法.

  • 正如@beerwin所提到的,滚动页面时这不起作用.如果您需要基于页面而不是可查看窗口的坐标,请改用"e.pageX"和"e.pageY". (19认同)
  • 仍然不起作用母鸡你滚动页面吐出不同的结果 (13认同)

小智 26

注意!之间是有区别e.clientX&e.clientYe.pageXe.pageY

尝试两者并确保使用正确的.clientXclientY根据滚动位置进行更改


rck*_*hoe 19

这是一个更好的脚本:

$('#mainimage').click(function(e)
{   
    var offset_t = $(this).offset().top - $(window).scrollTop();
    var offset_l = $(this).offset().left - $(window).scrollLeft();

    var left = Math.round( (e.clientX - offset_l) );
    var top = Math.round( (e.clientY - offset_t) );

    alert("Left: " + left + " Top: " + top);

});
Run Code Online (Sandbox Code Playgroud)


its*_*zad 9

即使任何图像使窗口滚动,下面的代码也始终有效.

$(function() {
    $("#demo-box").click(function(e) {

      var offset = $(this).offset();
      var relativeX = (e.pageX - offset.left);
      var relativeY = (e.pageY - offset.top);

      alert("X: " + relativeX + "  Y: " + relativeY);

    });
});
Run Code Online (Sandbox Code Playgroud)

参考:http://css-tricks.com/snippets/jquery/get-xy-mouse-coordinates/