Как получить позицию мыши в jQuery без mouse-событий?
Я хотел бы получить текущее положение мыши, но я не хочу использовать:
$(document).bind('mousemove',function(e){
$("#log").text("e.pageX: " + e.pageX + ", e.pageY: " + e.pageY);
});
потому что мне просто нужно получить позицию и обработать информацию
5 ответов
Я не верю, что есть способ запрос координаты мыши, но вы можете использовать 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
код и тому подобное, запускается в ответ на событие, и большинство событий обеспечивают положение мыши. Таким образом, ваш код, который должен знать, где находится мышь, вероятно, уже имеет доступ к этой информации...
вы не можете прочитать положение мыши в 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
я использовал этот метод:
$(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.
кроме того, mousemove
события не запускаются, если вы выполняете перетаскивание через окно браузера.
Отслеживать координаты мыши во время перетаскивания, вы должны прикрепить обработчик для document.ondragover
event и использовать его свойство originalEvent.
пример:
var globalDragOver = function (e)
{
var original = e.originalEvent;
if (original)
{
window.x = original.pageX;
window.y = original.pageY;
}
}
я наткнулся на это, тот было бы неплохо поделиться... ребята, что вы думаете.
$(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...
}
});
и бум, вот оно..