我想找到一种方法来判断两个DOM元素之间的距离。不是以像素为单位,而是以遍历步骤为单位。

实际用途如下:有一个核心元素,需要在站点中查找其他相似元素,并模仿最接近的相关元素的行为。

例如。标签中没有设置宽度的画廊。不可见的选项卡可能没有宽度,因此除非显示该选项卡时将其重新初始化,否则该选项卡中的图库将是不可见的。隐藏的画廊将是核心元素,它将寻找画廊的另一个可能正常运行的实例,并复制其宽度以便工作。工作库可以在第一个选项卡中,或在内容中,也可以在侧边栏或页脚中的一个小库中。我想要的是让它“知道”最接近的其他实例是另一个选项卡上的实例,而不是页脚中的实例。由于这是一个WP插件,因此我无法对任何内容进行硬编码,并且该场景不仅限于选项卡。

.closest()不适用于此目的。

最佳答案

我发现针对这个目的,最有效的解决方案是:

var commonParentsDepth = a.parents().has(b).first().parents().length;

您将得到一个数字,告诉您这两个元素的共同祖先有多深。您可以对多个元素进行循环测试,一次比较两个,其中一个不变。您将可以通过结果判断两个元素是否比其他元素更紧密相关。数字越大,两个元素在树中的位置就越深,这意味着它们越近。

注意:这不是用于将两个元素与另外两个元素进行比较。

我结合了这两个有点相关的问题:


How to find the nearest common ancestors of two or more nodes?
JS/jQuery: Get depth of element?

关于javascript - 如何计算两个DOM元素之间的关系?即它们有多近(紧密相关),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16237752/

10-17 02:54