了解参数'e'和e.pageX / e.pageY

时间:2012-09-23 10:29:44

标签: jquery

function smtMouseMove(e){
    smtMouseCoordsX=e.pageX;
    smtMouseCoordsY=e.pageY;
    smtTipPosition();
}

function smtTipPosition(e){
    var thePosX=e.pageX+20;
    smtTip.css("left",thePosX);

    var thePosY=smtMouseCoordsY+20;
    smtTip.css("top",thePosY);

}

如果我有这个:var thePosX=e.pageX+20;我收到参数e未定义的错误。但如果我写var thePosX=smtMouseCoordsX+20;一切都好。我在这里想念什么?

3 个答案:

答案 0 :(得分:2)

在函数声明中,您要求发送参数e

function smtTipPosition(e) {}

但是,您 在执行时发送参数。

function smtMouseMove(e){
    smtMouseCoordsX=e.pageX;
    smtMouseCoordsY=e.pageY;
    smtTipPosition();
               // ^ Right here, you have to send the parameter 'e' too
}

实现类似的东西,应该解决问题。

function smtMouseMove(e){
    smtTipPosition(e);
}

function smtTipPosition(e){
    var thePosX=e.pageX+20;
    smtTip.css("left",thePosX);

    var thePosY=smtMouseCoordsY+20;
    smtTip.css("top",thePosY);

}

通常,e是指 事件对象 。它必须由某些事件或功能启动或传递。在你的情况下,函数setMouseMovesmtTipPosition都需要一个事件对象来执行它。

让我们看一个简单的例子

$("a").click(function(e) {
    //Here `e` will hold the event object of the page, when any `a` on the page will be clicked
    console.log(e.pageX); //Calling this will give the x coordinates of mouse position on the page, when the `a` was clicked
});

答案 1 :(得分:0)

e是一个事件对象,事件对象与方法或事件(例如onmouseover,onmousout事件)相关联。

您缺少参数smtTipPosition();功能。要么传递事件对象,要么将位置值发送到smtTipPosition()函数

function smtMouseMove(e){
    smtMouseCoordsX=e.pageX;
    smtMouseCoordsY=e.pageY;
    smtTipPosition(smtMouseCoordsX,smtMouseCoordsy);
}

使用参数化值设置带有位置的css。

function smtTipPosition(posX, PosY){
    var thePosX=posX+20;
    smtTip.css("left",thePosX);

    var thePosY=PosY+20;
    smtTip.css("top",thePosY);

}

答案 2 :(得分:0)

正如其他人已经说过你要将鼠标位置传递给第二种方法,如下所示:

function smtMouseMove(e){
    smtTipPosition({ x: e.pageX, y: e.pageY });
}

function smtTipPosition(point) {
    smtTip.css("left", e.x + 20);
    smtTip.css("top", e.y + 20);
}