2013-02-09 144 views
16

当您知道div名称时,很容易找到div的位置。但是,当我所知道的是屏幕的X/Y线时,是否有一种简单的方法可以获得div ID?有没有办法从位置(x,y线)找到div名称

在名为#HarbourRadar的板(另一个div)中,名为'#Items1'到'#Items50'的div范围内不会有重叠的div。每个div#项目可以有多个堆叠的图像。

无论如何,任何暗示从一个位置找到div将不胜感激。

下面的代码(取自下面的答案)获取div #HarbourRadar的id,这部分是正确的,因为div #marker在ontop上分层,但不会返回div #marker这是选择 - 即一个具有较高的Z指数。

var pos = $("#marker").position(); 
alert(document.elementFromPoint(pos.left, pos.top).id); 
+0

你为什么想通过坐标找到它?你如何获得坐标? – 2013-02-09 11:25:36

+0

不确定这是否可行,但是您是否尝试在body标签上添加点击处理程序,然后检查“target”属性以查看它是否能为您提供原始来源? – vansimke 2013-02-09 11:28:43

+0

@Lars,以及我在一个基于网格的板子上工作,所以我知道X,Y坐标很好。即从一个标记获取位置会是这样的。 var pos = $(“#marker”)。position(); alert('X cord:'+ pos.posX); – Marker 2013-02-09 11:59:14

回答

18

是的,有可能使用document.elementFromPoint方法。
这是如何通过Microsoft记录的。 这是Mozilla documentation
该功能几乎完全兼容,您可以在this browser comparison中看到。

这里是MDN文档的一些示例代码:

function changeColor(newColor) { 
 
    elem = document.elementFromPoint(2, 2); 
 
    elem.style.color = newColor; 
 
}
<p id="para1">Some text here</p> 
 
<button onclick="changeColor('blue');">blue</button> 
 
<button onclick="changeColor('red');">red</button>

+0

伟大的答案,我从来没有听说过这个:) – 2013-02-09 11:28:01

+0

我也想知道,当我第一次。但我仍然怀疑这件事的兼容性。 – 2013-02-09 11:28:43

+0

也看看这里http://www.zehnet.de/2010/11/19/document-elementfrompoint-a-jquery-solution/ – dfsq 2013-02-09 11:32:36

2

看看这个现有的StackOverflow的谈话,你会发现这有助于:

Determine which element the mouse pointer is on top of in Javascript

这正在使用一个JavaScript函数document.elementFromPoint,并且有很好的功能演示,显示一个工作示例。

的URL的jsfiddle是:从小提琴http://jsfiddle.net/MPTTp/

代码:

$(window).click(function(e) { 
    var x = e.clientX, y = e.clientY, 
     elementMouseIsOver = document.elementFromPoint(x, y); 

    alert(elementMouseIsOver); 
}); 
相关问题