我有一个带有很多嵌套元素的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/

07-24 09:44