代码之家  ›  专栏  ›  技术社区  ›  spacemonkeys

jQuery元素坐标

  •  3
  • spacemonkeys  · 技术社区  · 14 年前

    我有以下代码

     $(document).ready(function(){
            $('img').mousedown(function(event) {
                $('p').text('Mouse Clicked x =' + event.screenX + ' Y = ' + event.screenY);
            });
        });
    

    3 回复  |  直到 14 年前
        1
  •  4
  •   lonesomeday    14 年前

    据我所知,以下代码有效:

    $('img').mousedown(function(e) {
        var offset = $(this).offset(),
            imgLeft = e.pageX - offset.left,
            imgTop = e.pageY - offset.top;
    
        $('p').text('Mouse clicked x = ' + imgLeft + ' Y = ' + imgTop);
    });
    

    See jsFiddle .

        2
  •  0
  •   T.J. Crowder    14 年前

    你不想 screenX screenY pageX pageY . 然后您可以轻松地减去图像的位置(通过 offset

    $('img').click(function(event) {
      var imgPos;
    
      imgPos = $(this).offset();
      display('Mouse click at ' + event.pageX + 'x' + event.pageY);
      display('Image at ' + imgPos.left + 'x' + imgPos.top);
      display(
        'Delta within image: ' +
        (event.pageX - imgPos.left) +
        'x' +
        (event.pageY - imgPos.top)
      );
    });
    
    function display(msg) {
      $("<p/>").html(msg).appendTo(document.body);
    }
    

    Live example

        3
  •  0
  •   Ben    14 年前

    你试过减去 offsetLeft offsetTop 从你的数字中得到的图像(和它的父母)?

    你可能需要 while 通过 offsetParents 为了得到所有 offset