6

我正在尝试使用此代码来检测鼠标方向是向上还是向下:

<html>  
    <head></head>
    <body>
        <div style="width: 500px; height: 500px; background: red;"></div>
    </body>
</html>

var mY = 0;
$('body').mousemove(function(e) {
    mY = e.pageY;
    if (e.pageY < mY) {
        console.log('From Bottom');
        return;

    } else {
        console.log('From Top');
    }

});

但是,我期望此代码不起作用。控制台日志始终显示“从顶部”

任何的想法 ?

演示

4

6 回答 6

11
var mY = 0;
$('body').mousemove(function(e) {

    // moving upward
    if (e.pageY < mY) {
        console.log('From Bottom');

    // moving downward
    } else {
        console.log('From Top');
    }

    // set new mY after doing test above
    mY = e.pageY;

});
于 2011-12-09T18:50:01.087 回答
4

my = e.pageY在比较之前进行设置,这意味着比较总是相等的(因此是错误的。)

像这样试试

var mY = 0;
$('body').mousemove(function(e) {

    if (e.pageY < mY) {
        console.log('From Bottom');

    } else {
        console.log('From Top');
    }
    mY = e.pageY;

});
于 2011-12-09T18:49:07.780 回答
1

e.pageY总是等于,mY因为您设置mYe.pageY就在if语句之前。

于 2011-12-09T18:50:01.223 回答
0

您需要mY在确定方向后设置您的值(之前您是在之前设置它 - 因此总是会收到特定的结果)

代码:

//Values starts at middle of page
var mY = $('window').height()/2;

//Compares position to mY and Outputs result to console
$('body').mousemove(function(e) {
    if (e.pageY < mY) {
        console.log('Going Up');   
    } 
    else {
        console.log('Going Down');
    }
    mY = e.pageY;
});

工作示例

于 2011-12-09T18:52:07.683 回答
0

如果您使用 if/else,它将始终输出“Going Down”,即使 e.pageY == mY。

请改用 2 个 if 语句!

var mY = 0;
$('body').mousemove(function(e) {

// moving upward
if (e.pageY < mY) {
    console.log('From Bottom');

// moving downward
}
if (e.pageY > mY) {
    console.log('From Top');
}

// set new mY after doing test above
mY = e.pageY;

});

只是从 macek 复制代码并将 'else' 替换为 'if(...)' btw

于 2014-02-11T10:12:29.393 回答
0

最简单的方法。通过这种方式,您可以检测方向变化:

var tempMouseY=0;
$('body')
.mousemove(function(e) {
    moveY = -(tempMouseY-e.pageY);
    tempMouseY = e.pageY;
    if (moveY<0) {
        console.log('From Bottom');
    } else {
        console.log('From Top');
    }

 });
于 2015-03-06T07:26:59.807 回答