我有一个带有很多嵌套元素的html页面。我试图找到两个节点之间的DOM距离,以便我可以选择视觉同级,即使它们不是DOM同级。
<div class='root'>
<div class='wrapper'>
<div class='family brother'>
<div class='otherstuff'>Other Stuff</div>
</div>
</div>
<div class='wrapper'>
<div class='family sister'>
<div class='otherstuff'>More Stuff</div>
<div class='wrapper>
<div class='family nephew'>
<div class='otherstuff'>Yet more stuff</div>
</div>
</div>
</div>
</div>
</div>
因此,使用jQuery:
var root = $(".root");
var siblings = root.find(".family");
但这将选择兄弟,姐妹和侄子。
我不能用
var siblings = root.find(".wrapper>.family");
因为那也将匹配所有三个。
而且我不能使用
var siblings = $(".root>.wrapper>.family");
因为根据模板,可能还有其他包装元素。
我正在寻找的是:给定.brother下的.brother,通过计算从.brother到.root的DOM(分层)距离是否匹配另一个.family成员与之的距离,告诉我另一个.family是否是“兄弟”。 。根。结果集应仅包含.brother和.sister,而不能包含.nephew。
最佳答案
这可以通过JQuery.closest()完成
它将返回与您的目标元素最接近的匹配元素。
在此处阅读文档:http://api.jquery.com/closest/