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 );
Другие вопросы по тегам