Tôi muốn có được vị trí chuột hiện tại nhưng tôi không muốn sử dụng:
$(document).bind('mousemove',function(e){
$("#log").text("e.pageX: " + e.pageX + ", e.pageY: " + e.pageY);
});
bởi vì tôi chỉ cần nhận vị trí và xử lý thông tin
Tôi muốn có được vị trí chuột hiện tại nhưng tôi không muốn sử dụng:
$(document).bind('mousemove',function(e){
$("#log").text("e.pageX: " + e.pageX + ", e.pageY: " + e.pageY);
});
bởi vì tôi chỉ cần nhận vị trí và xử lý thông tin
Câu trả lời:
Tôi không tin là có cách để truy vấn vị trí chuột, nhưng bạn có thể sử dụng mousemove
trình xử lý chỉ lưu trữ thông tin, vì vậy bạn có thể truy vấn thông tin đã lưu trữ.
jQuery(function($) {
var currentMousePos = { x: -1, y: -1 };
$(document).mousemove(function(event) {
currentMousePos.x = event.pageX;
currentMousePos.y = event.pageY;
});
// ELSEWHERE, your code that needs to know the mouse position without an event
if (currentMousePos.x < 10) {
// ....
}
});
Nhưng hầu hết tất cả các mã, ngoại trừ setTimeout
mã và tương tự, đều chạy để đáp ứng với một sự kiện và hầu hết các sự kiện đều cung cấp vị trí chuột. Vì vậy, mã của bạn cần biết vị trí của con chuột có thể đã có quyền truy cập vào thông tin đó ...
$(window).load(function(e){ console.log(e.pageX,e.pageY); });
trả về không xác định cho vị trí chuột
Bạn không thể đọc vị trí chuột trong jQuery mà không sử dụng sự kiện. Trước tiên, hãy lưu ý rằng các thuộc tính event.pageX
và event.pageY
thuộc tính tồn tại trên bất kỳ sự kiện nào, vì vậy bạn có thể làm:
$('#myEl').click(function(e) {
console.log(e.pageX);
});
Tùy chọn khác của bạn là sử dụng bao đóng để cấp cho toàn bộ mã của bạn quyền truy cập vào một biến được cập nhật bởi trình xử lý di chuyển chuột:
var mouseX, mouseY;
$(document).mousemove(function(e) {
mouseX = e.pageX;
mouseY = e.pageY;
}).mouseover(); // call the handler immediately
// do something with mouseX and mouseY
Tôi đã sử dụng phương pháp này:
$(document).mousemove(function(e) {
window.x = e.pageX;
window.y = e.pageY;
});
function show_popup(str) {
$("#popup_content").html(str);
$("#popup").fadeIn("fast");
$("#popup").css("top", y);
$("#popup").css("left", x);
}
Bằng cách này, tôi sẽ luôn có khoảng cách từ đỉnh được lưu trong y và khoảng cách từ trái được lưu trong x.
Hơn nữa, mousemove
các sự kiện sẽ không được kích hoạt nếu bạn thực hiện kéo 'không' thả trên cửa sổ trình duyệt. Để theo dõi tọa độ chuột trong quá trình drag'n'drop, bạn nên đính kèm trình xử lý cho document.ondragover
sự kiện và sử dụng thuộc tính originalEvent.
Thí dụ:
var globalDragOver = function (e)
{
var original = e.originalEvent;
if (original)
{
window.x = original.pageX;
window.y = original.pageY;
}
}
sử dụng window.event
- nó chứa cuối cùng event
và như bất kỳ event
chứa nào pageX
, pageY
v.v. Hoạt động cho Chrome, Safari, IE nhưng không phải FF.
var CurrentMouseXPostion;
var CurrentMouseYPostion;
$(document).mousemove(function(event) {
CurrentMouseXPostion = event.pageX;
CurrentMouseYPostion = event.pageY;
});
Tạo eventListener trên đối tượng chính, trong trường hợp của tôi là đối tượng document, để lấy chuột cuộn mọi khung và lưu trữ chúng trong các biến toàn cục, và như vậy bạn có thể đọc chuột Y & Z bất cứ khi nào bạn thích, bất cứ nơi nào bạn muốn.
Tôi đã xem qua điều này, rất vui được chia sẻ ...
các bạn nghĩ sao?
$(document).ready(function() {
window.mousemove = function(e) {
p = $(e).position(); //remember $(e) - could be any html tag also..
left = e.left; //retrieving the left position of the div...
top = e.top; //get the top position of the div...
}
});
và bùng nổ, chúng tôi có nó ..