通过坐标获取子元素
Get child element by coordinates
请考虑以下标记
<div id = "parent">
<a id = "child1" href = "#">1</a>
<a id = "child2" href = "#">2</a>
<a id = "child3" href = "#">3</a>
<a id = "child4" href = "#">4</a>
</div>
我需要通过其位置(X 和 d Y 坐标)让孩子进入父级内部。当我使用var element = document.elementFromPoint(x, y);
时,它会返回父元素。有没有办法获取子元素?
你可以
改用document.elementsFromPoint
。
它返回一个数组。
const elementsAtPoint = document.elementsFromPoint(x, y)
const numberOfElementsAtPoint = elementsAtPoint.length
嵌套最深的元素在数组中排在第一位,而最外层的元素排在最后。您可以通过父元素的 id 找到父元素,并在数组中返回该元素之前。
像这样详细一步一步的东西:
const elementsAtPoint = document.elementsFromPoint(x, y);
const elementIds = elementsAtPoint.map(element => element.id);
const parentIndex = elementIds.indexOf("parent");
const childIndex = parentIndex - 1;
const childElement = elementsAtPoint[childIndex];
我在控制台中做了一些测试,我认为这应该可以工作。您还必须处理找不到元素的情况。
我可能会将其重写为如下函数:
function getChildAtPoint(parentId, x, y){
const elementsAtPoint = document.elementsFromPoint(x, y);
const elementIds = elementsAtPoint.map(element => element.id);
const parentIndex = elementIds.indexOf(parentId);
// If we can't find element with parentId, or it is the first
// in the array we found nothing.
if( parentIndex < 1 ){ return; };
const childIndex = parentIndex - 1;
const childElement = elementsAtPoint[childIndex];
return childElement;
}
相关文章:
- React - 从 DOM 元素获取组件以进行调试
- 如何使用 JQuery 从相对元素获取 html 文本
- 从同一域上的 iframe 中的元素获取值
- 使用本机 Javascript 从 DOM 元素获取选择器字符串
- 使用jquery从另一个元素获取使用id的输入的id
- 如何从角度元素获取编译的节点值
- 如何为不同的元素获取不同的父类
- 从 jQuery 中的子元素获取父 tr 元素
- 当浮点部分为空时,从 JQuery 中的输入元素获取数字值不起作用
- 从 XML 元素获取文本
- 从音频元素获取音频样本
- 从所选元素 html 上方的元素获取属性值
- 使用 jQuery.data 从 dom 元素获取布尔值
- 如何通过jquery从某个元素获取部分文本
- 从输入元素获取表单和表单数据对象
- 从动态元素获取挖空视图的大小
- 从中继器循环中显示的子自定义元素获取正确的上下文.奥蕾莉亚
- 如何使用 JavaScript 或 JQuery 从输入类型=文件 html 元素获取文件名
- 从父元素获取 ID 并将它们放在数组中
- 尝试从选项元素获取 HTML