使用其他参数检索函数内的鼠标位置

时间:2013-06-26 20:48:49

标签: jquery function mouse-position

基本问题:我有一个带有多个参数的函数。如何从该函数内部检索鼠标位置?这里有一些代码来澄清我的意思。

$(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];
    ...
}

有人可以向我解释为什么函数的行为如此,以及如何在上层函数中正确检索鼠标位置?原因是,我想向该函数传递更多参数,但仍然能够在执行后检索鼠标位置。

非常感谢

1 个答案:

答案 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);