Javascript 在完整文档中查找最近的元素

Javascript 在完整文档中查找最近的元素,javascript,jquery,Javascript,Jquery,我已经使用Jqueryindex为我的文档编制了索引。给定某个索引值,我想用一些类来“定位”最近的元素。这对我不起作用: $(variableIndexNumber).closest('.class'); 原因是,.class有时会更改其位置,这意味着它可能位于文档中的任何位置。有时它是一个兄弟姐妹,有时是一个父母,有时在文档的最上面或最下面。因此,通常的选择器“下一个”最近的”第一个”下一个”等对我不起作用(因为文档树) 相对于某些其他元素(由变量给出),我可以尝试获取最接近的.class

我已经使用Jquery
index
为我的文档编制了索引。给定某个索引值,我想用一些
来“定位”最近的元素。这对我不起作用:

$(variableIndexNumber).closest('.class');
原因是,
.class
有时会更改其位置,这意味着它可能位于文档中的任何位置。有时它是一个兄弟姐妹,有时是一个父母,有时在文档的最上面或最下面。因此,通常的选择器“下一个”
最近的”
第一个”
下一个”
等对我不起作用(因为文档树)

相对于某些其他元素(由变量给出),我可以尝试获取最接近的
.class

使用
.prevUntil('.class')
.nextUntil('.class')
.parentsUntil('.class')
,然后比较它们的大小

就DOM结构而言,大小最小的元素与元素最接近

更新:在此过程中,您还需要
和self()
过滤器()
和典型的
.next()
.prev()
才能真正到达您想要的目标。演示已经更新。您可以看到,现在代码更加通用

您可能还需要一个排序函数,正如我在下面的概念验证中所做的那样

演示


旁注:没有
.childrentill()
,因为这是向DOM树外分支,而不是向文档根内分支,以防您感到奇怪。但我的猜测是,你可以先做一个
$('.me')。查找('.class')
,然后对每一个进行
.parentsUntil('.me')
,然后比较大小。但我不确定这是否有效。

有s/is/应该只有一个元素具有该特定id吗?@Bergi否可能有很多元素(类是更好的例子,会改变这个问题…)@Youss否,不能有多个元素具有相同id。@Ray Nicholus我在类中就是这样更改的。(是的,可能有很多相同的ID,但不好)@Youss“它不好”是一种轻描淡写的说法。它违反了规范。进行了更正,应该是
.parentsUntil()
,而不是
。parents()
您有什么疑问吗?有意义吗?@Terry Young我仍然需要在我的项目中实施它,但它看起来很棒,而且正是我想要的。感谢您留下来并展示“示例(完整代码)”。同样很有趣的是,你是如何编写代码的:)事实上,我已经更新了演示,我将编辑答案以提及你可能需要的其他内容