2012-12-03 2 views
2

У меня есть обработчик mousedown события на img элементе:Как получить смещение mousedown относительно элемента-цели img?

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

Как я могу получить расположение mousedownотносительноimg? Относительно, то есть к любому углу img, в зависимости от того, что проще всего.

FWIW, я использую jQuery.

(. Извините за тупой вопрос, я полагаю, что ответ должен быть тривиальным, но я не могу найти его, и это сводит меня с ума ...)

EDIT: Хорошо, вот ответ:

$('#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), а не сырые смещения, так как последний не всегда целые числа (идут цифра).

BTV, по крайней мере, в соответствии с Firebug, мероприятия offsetX и offsetY не определены, и layerX и layerY даже не входит в число его членов.

ответ

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; 
}); 
+0

Спасибо, этот ответ был самым близким к тому, что я, наконец, поселился (см. Мой EDIT в исходное сообщение). – kjo

1

Я думаю, вы можете использовать Layerx и layerY.

$('#some_image').bind({ 
    mousedown: function(e) { 
     var img = e.target; 
     console.log(e.layerX+","+ e.layerY); 
    } 
}); 
1

объекта события JQuery имеет pageX и Пейджи свойствами, они возвращают положение указателя мыши, относительно левого края документа.

Итак, вам просто нужно получить эти позиции в событии click и сравнить с позицией целевого элемента.

Официальная документация jQuery имеет приятные примеры относительно отслеживания Mouse position.

Смежные вопросы