JQuery, почему мой слушатель mousemove не передает объект события?
Я использую следующий код.
var cursorXPos;
var cursorYPos;
$(document).mousemove( cursorLocation(evt) );
function cursorLocation (evt) {
cursorXPos = evt.pageX;
cursorYPos = evt.pageY;
}
Но это дает мне ошибку.
Uncaught TypeError: Невозможно прочитать свойство
pageX
из неопределенного.
Однако, если я использую анонимную функцию, объект события пропускается, и все работает нормально.
$(document).mousemove( function (evt) {
cursorXPos = evt.pageX;
cursorYPos = evt.pageY;
});
2 ответа
Решение
Вы не можете передать параметр в функцию при привязке события. Вы просто передаете имя события, а javascript обрабатывает параметры для вас.
var cursorXPos;
var cursorYPos;
$(document).mousemove( cursorLocation ); // <-- here
function cursorLocation (evt) {
cursorXPos = evt.pageX;
cursorYPos = evt.pageY;
}
Вам нужно передать ссылку на функцию mousemove
не вызывайте его (добавляя ()
)
$(document).mousemove( cursorLocation );