我正在攻击某些东西来修复另一个系统约束的问题。不理想,但是..
无论如何,我需要生成一个点击/触摸,然后找出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)
下的哪个元素。有没有办法做到这一点?
答案 0 :(得分:1)
答案 1 :(得分:0)
你看过document.elementFromPoint吗?这可能是一种在特定位置找到元素的简洁方法。
https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint
答案 2 :(得分: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]));
编辑:重新阅读你的问题,我只是不知道你想要实现的目标。