可能重复:
如何获得驻留在单击点的所有元素的列表?
我知道我可以用得到最高的z-index元素document.elementFromPoint(x,y)
问题是我需要包含触摸事件的位置,每格。
我怎样才能传播润色之下元素?
我已经看到了一些哈克解决方案,显示/隐藏元素,重新生成,而该事件,或用CSS指针事件的风格,但我不能使用这些,他们可能会导致闪烁...
下图说明了什么,我需要做的:
如果紫,绿,蓝框表示div元素,以及红点触摸的位置,我需要将返回“DIV3,DIV2,DIV1”的功能。
没有与此代码闪烁:
$("body").click(function(e){
var x = e.pageX, y = e.pageY;
var res = [];
var ele = document.elementFromPoint(x,y);
while(ele && ele.tagName != "BODY" && ele.tagName != "HTML"){
res.push(ele);
ele.style.display = "none";
ele = document.elementFromPoint(x,y);
}
for(var i = 0; i < res.length; i++){
res[i].style.display = "";
}
console.log(res);
});
什么这样做:
$(document).click(function(e) {
var pageX = e.pageX;
var pageY = e.pageY;
$('*').each(function(index) {
var offset = $(this).offset();
var left = offset.left;
var right = offset.right;
var width = $(this).width();
var height = $(this).height();
if(pageX > left && pageX < left + width) {
if(pageY > top && pageY < top + height) {
//Handle the div
}
}
});
});
文章来源: Javascript/jquery, get all divs location at (x,y). Forwarding touches? [duplicate]