基本问题:我有一个带有多个参数的函数。如何从该函数内部检索鼠标位置?这里有一些代码来澄清我的意思。
$(element).on("mousedown",checkDragDropEdit);
function checkDragDropEdit() {
if($('.editing').length > 0) {
$('.editing').css('border','3px solid red');
return
} else {
var oldMousePos = checkMousePos();
$(this).bind("mouseup",function(e) {
var newMousePos = [e.pageX,e.pageY];
if(oldMousePos[0] == newMousePos[0] && oldMousePos[1] == newMousePos[1]) {
//makeEditable($(this));
edit($(this));
$(this).off("mousedown",checkDragDropEdit);
}
$(this).unbind("mouseup");
});
}
}
function checkMousePos(e) {
return [e.pageX,e.pageY];
}
这不起作用,该函数返回“Uncaught TypeError:无法读取未定义的属性'pageX'。”
然而,如果我在“checkDragDropEdit”函数中交换一个部分,我可以得到坐标:
function checkDragDropEdit(e) {
...
var oldMousePos = [e.pageX,e.pageY];
...
}
有人可以向我解释为什么函数的行为如此,以及如何在上层函数中正确检索鼠标位置?原因是,我想向该函数传递更多参数,但仍然能够在执行后检索鼠标位置。
非常感谢
答案 0 :(得分:1)
正是因为这条线
var oldMousePos = checkMousePos();
function checkMousePos(e) {
return [e.pageX,e.pageY];
}
它正在根据Event
对象读取位置。但这是一个简单的函数调用。
将事件对象传递给方法
function checkDragDropEdit(e) {
... // Pass the event object
var oldMousePos = checkMousePos(e);