0

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

$(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: Cannot read property 'pageX' of undefined”。

然而,如果我将“checkDragDropEdit”函数中的一部分交换为此,我可以获得坐标:

function checkDragDropEdit(e) {
    ...
    var oldMousePos = [e.pageX,e.pageY];
    ...
}

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

非常感谢

4

1 回答 1

1

正是因为这条线

var oldMousePos = checkMousePos();

function checkMousePos(e) {
    return [e.pageX,e.pageY];
}

它是根据Event对象读取位置。但这是一个简单的函数调用。

将事件对象传递给方法

function checkDragDropEdit(e) {

   ... // Pass the event object
   var oldMousePos = checkMousePos(e);
于 2013-06-26T20:52:57.777 回答