你能让ClientX&&ClientY引用选择器而不是窗口吗?



当我调用一个函数时,我从全局函数中得到:window.event.clientX和window.event.clientY,粘贴。

我试图粘贴在坐标,但他们是一些信息,我正在努力解决。

我正要取

window_data:  {top,left}

和减:

stage_div_offset:  {top,left}

来获得实际的偏移量,但这似乎也有点偏离。在X和Y方向上大约40像素。我猜这可能是由于margin或padding之类的原因

我真正好奇的是,是否有办法获得鼠标的XY参考div或其他htmlElement ?

我不确定是否有一个函数,我可以在选择器中传递,或者如果使用像jquery这样的东西,实际上会有一个函数或选择器的东西叫做:鼠标。

我确实觉得下面这个话题是相关的,尽管不确定它是否使我的话题成为一个话题:
jQuery获取鼠标在元素中的位置

Edit:原来我在做下面的代码:

var stage = $("#stage").offset(),
    results = { 
        left: window.event.clientX - stage.left, 
        top: window.event.clientY - stage.top 
    };

编辑2:当前的答案似乎都不起作用,部分原因是我的浏览器不识别mouseEvent,所以它不能得到屏幕的位置。

我写了下面的代码来尝试获取鼠标定位

var MouseLocation = {};
MouseLocation.Left = 0;
MouseLocation.Top = 0;
MouseLocation._event;
MouseLocation.get_position = function () { return { left: MouseLocation.Left, top: MouseLocation.Top }; }
MouseLocation.attach = function () {
    MouseLocation._event = function (e) {
        var loc = { left: e.clientX, top: e.clientY }
        MouseLocation.Left = loc.left;
        MouseLocation.Top = loc.top;
    };
    $("#stage").on("mousemove", MouseLocation._event);
}
MouseLocation.detach = function () {
    $("#stage").off("mousemove", MouseLocation._event);
}
MouseLocation.ping = function () {
    MouseLocation.attach();
    $("#stage").mousemove();
    MouseLocation.detach();
}

这样,在我的事件中,我就可以写入:

MouseLocation.ping ();

MouseLocation.get_position ();$("#stage").on("mousemove")

你可以使用position()来:

获取匹配元素集合中第一个元素相对于偏移的父元素的当前坐标

您可以取鼠标的文档坐标并减去元素的坐标:

relX = e.clientX-element.offset().left;
relY = e.clientY-element.offset().top;
http://jsfiddle.net/4scbu/1/

offset()的优点是计算中包含了边距和填充。

最新更新