Javascript 在完整文档中查找最近的元素
我已经使用JqueryJavascript 在完整文档中查找最近的元素,javascript,jquery,Javascript,Jquery,我已经使用Jqueryindex为我的文档编制了索引。给定某个索引值,我想用一些类来“定位”最近的元素。这对我不起作用: $(variableIndexNumber).closest('.class'); 原因是,.class有时会更改其位置,这意味着它可能位于文档中的任何位置。有时它是一个兄弟姐妹,有时是一个父母,有时在文档的最上面或最下面。因此,通常的选择器“下一个”最近的”第一个”下一个”等对我不起作用(因为文档树) 相对于某些其他元素(由变量给出),我可以尝试获取最接近的.class
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我仍然需要在我的项目中实施它,但它看起来很棒,而且正是我想要的。感谢您留下来并展示“示例(完整代码)”。同样很有趣的是,你是如何编写代码的:)事实上,我已经更新了演示,我将编辑答案以提及你可能需要的其他内容