Как получить положение мыши в jQuery без событий мыши?
Я хочу получить текущую позицию мыши, но я не хочу использовать:
$(document).bind('mousemove',function(e){
$("#log").text("e.pageX: " + e.pageX + ", e.pageY: " + e.pageY);
});
потому что мне просто нужно получить позицию и обработать информацию
Ответы
Ответ 1
Я не верю, что есть способ запросить позицию мыши, но вы можете использовать обработчик mousemove
, который просто хранит информацию, поэтому вы можете запросить сохраненную информацию.
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) {
// ....
}
});
Но почти весь код, кроме кода setTimeout
и т.д., запускается в ответ на событие, а большинство событий предоставляют положение мыши. Таким образом, ваш код, который должен знать, где мышь, вероятно, уже имеет доступ к этой информации...
Ответ 2
Вы не можете прочитать позицию мыши в jQuery без использования события. Обратите внимание, что свойства event.pageX
и event.pageY
существуют в любом событии, поэтому вы можете сделать:
$('#myEl').click(function(e) {
console.log(e.pageX);
});
Другой вариант - использовать закрытие, чтобы предоставить вашему коду доступ к переменной, которая обновляется обработчиком mousemove:
var mouseX, mouseY;
$(document).mousemove(function(e) {
mouseX = e.pageX;
mouseY = e.pageY;
}).mouseover(); // call the handler immediately
// do something with mouseX and mouseY
Ответ 3
Я использовал этот метод:
$(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);
}
Таким образом, я всегда буду иметь расстояние от вершины, сохраненной в y, и расстояние слева от сохранения в x.
Ответ 4
Кроме того, события mousemove
не запускаются, если вы выполняете drag'n'drop над окном браузера.
Чтобы отслеживать координаты мыши во время drag'n'drop, вы должны присоединить обработчик для события document.ondragover
и использовать его свойство originalEvent.
Пример:
var globalDragOver = function (e)
{
var original = e.originalEvent;
if (original)
{
window.x = original.pageX;
window.y = original.pageY;
}
}
Ответ 5
Я натолкнулся на это, потому что было бы неплохо поделиться...
что вы, ребята, думаете.
$(document).ready(function(){
window.mousemove = function(e){
p = $(e).position(); //remember $(e) - could be any html tag also..
left = e.left; //retieving the left position of the div...
top = e.top; //get the top position of the div...
}
});
и стрела, там у нас есть.