您可以保存上一个mousemove
事件的位置,以便与当前位置进行比较:
var last_position = {},
$output = $('#output');
$(document).on('mousemove', function (event) {
if (typeof(last_position.x) != 'undefined') {
var deltaX = last_position.x - event.clientX,
deltaY = last_position.y - event.clientY;
if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) {
} else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) {
} else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) {
} else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) {
}
}
last_position = {
x : event.clientX,
y : event.clientY
};
});
这里有一个演示:http://jsfiddle.net/Dv29e/
更新
您还可以限制 mousemove
事件以更全面地了解鼠标的移动情况:
var last_position = {},
$output = $('#output'),
mousemove_ok = true,
mouse_timer = setInterval(function () {
mousemove_ok = true;
}, 500);
$(document).on('mousemove', function (event) {
if (mousemove_ok) {
mousemove_ok = false;
...
}
});
仅当以下条件满足时,它才会检查鼠标指针的位置是否与其过去的位置相同:
- 上次位置存在。
mousemove_ok
变量被设置为 true
,这是每半秒钟执行一次的。
这里有一个节流示例:http://jsfiddle.net/Dv29e/4/