使用JavaScript和jQuery,我正在尝试获取鼠标点击事件的鼠标坐标,以在其他JavaScript函数中使用。我的问题是,在事件函数内设置的全局变量似乎不会像其他函数内的全局变量那样在函数外更新。例如,如果我有以下全局变量声明和事件函数来跟踪带有ID“clickable_area”的div中的鼠标坐标:
var mouseXPos = 0;
var mouseYPos = 0;
$(document).ready(function(){
$("#clickable_area").click(function(e){
mouseXPos = e.pageX;
mouseYPos = e.pageY;
});
});
除非我将处理mouseXPos和mouseYPos的所有代码放在事件函数本身中,否则这两个变量在事件函数之外不会被更新和使用,直到下一个事件发生。例如:
function displayCoordinates() {
console.log("mouseXPos = " + mouseXPos + " and mouseYPos = " + mouseYPos);
}
...产生:
>>mouseXPos = 0 and mouseYPos = 0
任何关于如何在函数触发后更新这两个全局变量的建议,或者我只是在面对JavaScript的固有设计需求?我能使用回调队列来促进这一点吗?我可以跟踪“mousemove”事件,它可以正常工作,但我不想要不断跟踪鼠标移动带来的开销。