0

我正在研究一些东西来解决另一个系统约束的问题。不理想,但是..

无论如何,我需要生成一个点击/触摸然后找出 poing 下的最上面的元素(300, 300)。我在用:

event = $.Event( "mousedown", { pageX:300, pageY:300 } );
$("window").trigger( event );

然后我在听:

$(window).bind 'mousedown', (jQueryEvent)->
    console.log jQueryEvent.target

但是,event.target总是返回窗口。这是有道理的。但是,我想做的是在整个页面上生成一个 mousedown 事件,然后event.target用来找出(pageX, pageY). 有没有办法做到这一点?

4

3 回答 3

1

我建议你看看http://www.zehnet.de/2010/11/19/document-elementfrompoint-a-jquery-solution/这是一个完整的实现。

于 2013-03-21T21:20:39.927 回答
0

你看过document.elementFromPoint吗?这可能是一种在特定位置找到元素的干净方法。

https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint

于 2013-03-21T21:15:10.820 回答
0

pageX 和 pageY 在事件变量本身上,而不是在目标上。但是它们会被 mousedown 事件覆盖。你不需要为此创建一个事件,关闭就可以了:

function hotspot (a, b) {
    var x = a[0] || 0;
    var y = a[1] || 0;
    var w = b[0] || 0;
    var h = b[1] || 0;
    function between (x2, y2) {
        return x2 >= x &&
            y2 >= y &&
            x2 <= (x + w) &&
            y2 <= (y + h);
    }
    return function (e) {
        console.log("mouse x y:", e.pageX, e.pageY);
        console.log("target x y w h:", x, y, w, h);
        console.log(between(e.pageX, e.pageY));
    }
}
$(document).on('mousedown', hotspot([0,0], [300,300]));

http://jsfiddle.net/gpaMz/1/

编辑:重新阅读您的问题,我只是不知道您要达到的目标。

于 2013-03-21T21:33:01.270 回答