通过绝对坐标定位DOM元素

有没有一种简单的方法来定位“覆盖”(即在其边界内)具有X / Y坐标对的像素的所有DOM元素?

您可以查看document.elementFromPoint但我不知道哪些浏览器支持它。
Firefox和Chrome都有。 它也在MSDN中 ,但我不太熟悉这个文档,所以我不知道它包含在哪个IE版本中。

更新:

要查找以某种方式在此位置的所有元素,您可以假设父项的所有元素都在此位置。 当然,这不适用于绝对定位元素。

elementFromPoint只会为您提供最前面的元素。 要真正找到其他元素,您必须将最前面元素的display设置为none ,然后再次运行该函数。 但是用户可能会注意到这一点。 你必须尝试。

我无法阻止自己跳过Felix Kling的回答:

 var $info = $('
', { css: { position: 'fixed', top: '0px', left: '0px', opacity: 0.77, width: '200px', height: '200px', backgroundColor: '#B4DA55', border: '2px solid black' } }).prependTo(document.body); $(window).bind('mousemove', function(e) { var ele = document.elementFromPoint(e.pageX, e.pageY); ele && $info.html('NodeType: ' + ele.nodeType + '
nodeName: ' + ele.nodeName + '
Content: ' + ele.textContent.slice(0,20)); });

更新 :背景色!

这样做( 小提琴 ):

 $(document).click(function(e) { var hitElements = getHitElements(e); }); var getHitElements = function(e) { var x = e.pageX; var y = e.pageY; var hitElements = []; $(':visible').each(function() { var offset = $(this).offset(); if (offset.left < x && (offset.left + $(this).outerWidth() > x) && (offset.top < y && (offset.top + $(this).outerHeight() > y))) { hitElements.push($(this)); } }); return hitElements; }​ 

使用时:visible ,你应该知道这个:

具有可见性的元素:隐藏或不透明度:0被认为是可见的,因为它们仍然占用布局中的空间。 在隐藏元素的动画期间,该元素在动画结束前被视为可见。 在显示元素的动画期间,该元素在动画开始时被视为可见。

因此,根据您的需要,您可能希望排除visibility:hiddenopacity:0元素。