2013-02-01 42 views
17

thể trùng lặp:
Mouse position relative to div
getting mouse position with javascript within canvasNhận vị trí chuột trong div?

Làm thế nào tôi có thể có được vị trí của con chuột trong một tấm vải đó là một kích thước cố định nhưng có một biên độ tự động?

tôi không thể làm cho vị trí của nó cố định và không thể chỉ sử dụng vị trí chuột thường xuyên trên trang.

Mã này hoạt động hoàn hảo:

mouseX = e.pageX - div.offsetLeft; 
mouseY = e.pageY - div.offsetTop; 
+0

Google được bạn bè - http://api.jquery.com/mousemove/ –

+1

Xin vui lòng gửi một số mẫu mã để [jsfiddle] (http://jsfiddle.net/) hoặc cách khác như nó nếu bạn đang gặp một vấn đề cụ thể để kiểm tra. – oomlaut

+0

Vui lòng không xóa các liên kết trùng lặp; người đánh giá vẫn muốn xem câu hỏi của bạn đã bị đóng * cho *. –

Trả lời

19

Sử dụng jQuery:

var divPos = {}; 
var offset = $("#divid").offset(); 
$(document).mousemove(function(e){ 
    divPos = { 
     left: e.pageX - offset.left, 
     top: e.pageY - offset.top 
    }; 
}); 
+36

gì về việc không sử dụng jQuery – bryan

+0

@bryan - Tôi chắc chắn rằng nó có thể được thực hiện mà không jQuery, nhưng nó sẽ là khá phức tạp – PitaJ

+0

MDN nói 'pageX' không phải là tiêu chuẩn và không nên được sử dụng. https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/pageX Tôi đã gặp một số rắc rối khi sử dụng nó với externalObject chẳng hạn. – Charles

-1

Taken từ jQuery trang web: Jquery Tutorial site

$(document).mousemove(function(e){ 
     $('#status').html(e.pageX +', '+ e.pageY); 
    }); 

Chú ý: Cú pháp cố định

+0

Tại sao điều này được đánh dấu xuống? –

+0

Vì 'pageX' và' pageY' không liên quan đến vùng chứa. – dmackerman

+3

Chúng tôi nhận được câu trả lời này không hữu ích, không cần phải giữ lại nó! – Sheljohn

2

Sử dụng event.layerXevent.layerY để có được vị trí tương đối chuột tới phần tử hiện tại:

$('#canvas').mousemove(function(e){ 
    var mousePos = {'x': e.layerX, 'y': e.layerY}; 
}); 
+0

Thật tuyệt tính năng, quá tệ nó không được dùng nữa. – blex

+0

@blex Nó không được dùng nữa, nó không tiêu chuẩn: https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/layerX – DevAntoine

+0

Cũng nên nói rằng điều này có thể gây ra một số vấn đề nghiêm trọng như định nghĩa của lớp có thể eas ily được thay đổi bởi một flick đơn giản của cổ tay, do đó thay đổi layerX và layerY. – JosephMCasey

Các vấn đề liên quan