我正在构建一个应用程序,我反复需要获取位于特定位置(例如,相对于视口的 x,y)下的 html 元素列表。我正在考虑以下方法,但没有一个是令人满意的:
(1) 浏览 html,构建一个数据结构来跟踪每个元素的 x,y 位置(x,y -> 元素集),然后在我需要查找时访问这个数据结构. 不幸的是,这种方法有点麻烦,我正在寻找一种更好的方法来解决这个问题。另外,我担心它可能太慢了。
(2) 我正在考虑的一种可能更好的方法是临时添加一个捕获所有悬停事件的顶级事件处理程序,在特定位置伪造鼠标悬停,然后删除处理程序,但看起来这将只返回最顶层的元素(例如,如果在特定位置有一堆绝对位置 div,我认为它只会返回具有最高 z-index 的元素,而我需要全部,虽然我不确定)。
(3) 对于 IE,有 componentFromPoint(x, y),但我在其他浏览器中找不到等价物——它只返回最顶层的元素。
请注意,该应用程序是作为书签构建的,我无法控制底层的 html——不幸的是,这限制了任何简单的服务器端解决方案。
我愿意使用库(目前在 jquery 上)。
仅供参考,到目前为止,我在这里找到的最好的方法是根据 x & y 位置获取 DIV id;想知道是否有更新的东西。