JQuery,为什么我的mousemove监听器不能传递事件对象?

时间:2015-08-12 11:09:51

标签: javascript jquery events mouseevent mousemove

我使用以下代码。

var cursorXPos;
var cursorYPos;

$(document).mousemove( cursorLocation(evt) );

function cursorLocation (evt) {
 cursorXPos = evt.pageX;
 cursorYPos = evt.pageY;
}

但是这给了我一个错误。

  

未捕获的TypeError:无法读取未定义的属性pageX

但是,如果我使用匿名函数,则会传递事件对象,一切正常。

$(document).mousemove( function (evt) {
 cursorXPos = evt.pageX;
 cursorYPos = evt.pageY;
});

2 个答案:

答案 0 :(得分:3)

您需要将函数引用传递给mousemove,不要调用它(通过添加()

$(document).mousemove( cursorLocation );

答案 1 :(得分:2)

绑定事件时,无法在函数中传递参数。您只需传递事件的名称,javascript就会为您处理参数。

var cursorXPos;
var cursorYPos;

$(document).mousemove( cursorLocation ); // <-- here 

function cursorLocation (evt) {
    cursorXPos = evt.pageX;
    cursorYPos = evt.pageY;
}