如何在没有鼠标事件的情况下在jQuery中获得鼠标位置?

时间:2010-12-23 09:00:58

标签: jquery mouse position

我想获得当前的鼠标位置,但我不想使用:

$(document).bind('mousemove',function(e){ 
        $("#log").text("e.pageX: " + e.pageX + ", e.pageY: " + e.pageY); 
}); 

因为我只需要获得位置并处理信息

7 个答案:

答案 0 :(得分:142)

我不相信查询鼠标位置的方法,但您可以使用仅存储信息的mousemove处理程序,以便查询存储的信息。

jQuery(function($) {
    var currentMousePos = { x: -1, y: -1 };
    $(document).mousemove(function(event) {
        currentMousePos.x = event.pageX;
        currentMousePos.y = event.pageY;
    });

    // ELSEWHERE, your code that needs to know the mouse position without an event
    if (currentMousePos.x < 10) {
        // ....
    }
});

但是几乎所有代码(setTimeout代码等除外)都会响应事件而运行,大多数事件都会提供鼠标位置。所以你的代码需要知道鼠标可能已经访问过那些信息......

答案 1 :(得分:26)

如果不使用事件,您无法在jQuery中读取鼠标位置。首先请注意,任何事件都存在event.pageXevent.pageY属性,因此您可以这样做:

$('#myEl').click(function(e) {
    console.log(e.pageX);
});

你的另一个选择是使用一个闭包来让你的整个代码访问由mousemove处理程序更新的变量:

var mouseX, mouseY;
$(document).mousemove(function(e) {
    mouseX = e.pageX;
    mouseY = e.pageY;
}).mouseover(); // call the handler immediately

// do something with mouseX and mouseY

答案 2 :(得分:10)

我使用了这种方法:

$(document).mousemove(function(e) {
    window.x = e.pageX;
    window.y = e.pageY;
});

function show_popup(str) {
    $("#popup_content").html(str);
    $("#popup").fadeIn("fast");
    $("#popup").css("top", y);
    $("#popup").css("left", x);
}

通过这种方式,我总是保存在y中保存的顶部距离,保存在x中的左边距离。

答案 3 :(得分:6)

此外,如果您在浏览器窗口上执行拖放操作,则不会触发mousemove个事件。 要在drag'n'drop期间跟踪鼠标坐标,您应该为document.ondragover事件附加处理程序并使用它的originalEvent属性。

示例:

var globalDragOver = function (e)
{
    var original = e.originalEvent;
    if (original)
    {
        window.x = original.pageX;
        window.y = original.pageY;
    }
}

答案 4 :(得分:1)

使用window.event-它包含最后一个event,并且因为任何event包含pageXpageY等。适用于Chrome,Safari,IE而不是FF

答案 5 :(得分:0)

var CurrentMouseXPostion;
var CurrentMouseYPostion;

$(document).mousemove(function(event) {
    CurrentMouseXPostion = event.pageX;
    CurrentMouseYPostion = event.pageY;
});

在主要对象(在本例中为文档对象)上创建一个eventListener,以获取每帧的鼠标坐标并将其存储在全局变量中,这样您就可以随时随地读取鼠标Y和Z。 / p>

答案 6 :(得分:-1)

我遇到过这个,分享一下会很高兴... 你们怎么想?

$(document).ready(function(){
  window.mousemove = function(e){
    p = $(e).position();  //remember $(e) - could be any html tag also.. 
    left = e.left;        //retieving the left position of the div... 
    top = e.top;          //get the top position of the div... 
  }
});

繁荣,我们有它..