Координаты курсора с помощью jQuery. Введение
В этой статье я покажу маленький но полезный пример, как получать координаты курсора с помощью jQuery. Довольно часто приходится получать координаты курсора, как относительно всей страницы, так и относительно какого-нибудь элемента на странице, например внутри дива. Эти два варианта я и покажу. С первым все просто, можно обрабатывать событие, например, mousemove и получать в нем координаты относительно страницы. Со вторым вариантом — координаты внутри элемента, не на много сложнее: получаем координаты элемента и координаты курсора, находим разницу, а ответ и будет положение курсора внутри элемента.
Координаты курсора с помощью jQuery. Пример
Для наглядности приведу рабочий пример:
Наведи сюда!
Координаты курсора с помощью jQuery. Код
А теперь сам код, получение координат относительно всей страницы:
$(document).mousemove(function(e){ var X = e.pageX; // положения по оси X var Y = e.pageY; // положения по оси Y console.log("X: " + X + " Y: " + Y); // вывод результата в консоль });
Получение координат относительно элемента
$(document).ready(function(){ $('.div_hover').mousemove(function(e){ // положение элемента var pos = $(this).offset(); var elem_left = pos.left; var elem_top = pos.top; // положение курсора внутри элемента var Xinner = e.pageX - elem_left; var Yinner = e.pageY - elem_top; console.log("X: " + Xinner + " Y: " + Yinner); // вывод результата в консоль }); });
На этом все.
Я хочу вызвать модальное окно в месте клика мышкой
//Определяю координаты мышки
$(document).mousemove(function(e){
var MX = e.pageX; // положения по оси X
var MY = e.pageY; // положения по оси Y
)}
//вывожу окно
$.window ({
url:’test.php’,
x: MX,
y:MY,
width:600,
height:400
});
Не работает, переменные MX и MY не передаются.
Артур
Переменные MX и MY доступны только в функции $(document).mousemove.
Что бы определить переменные как глобальные их нужно прописать в теле script:
var MX = 0;
var MY = 0;
$(document).mousemove(function(e){
MX = e.pageX;
MY = e.pageY;
)}
$.window ({
url:’test.php’,
x: MX,
y:MY,
width:600,
height:400
});
Как в конструкцию $(document).mousemove(function(e){ … вписать именованную функцию? Т.е. как правильно закрепить обработчик события за именованной внешней функцией?
Точнее сказать, вписать-то функцию у меня получается, но почему-то не получается передать в нее обьект event — когда функция срабатывает, то обьект event не передается….
Спасибо за статью. Очень помогла.
а что в html не надо задавать ничего? P.S. первый день работы Jquery