Как получить позицию мыши в jQuery без событий мыши?
Я хотел бы получить текущее положение мыши, но я не хочу использовать:
$(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
событие и использовать его свойство 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... } });
и бум, вот оно..