javascript - 两个节点之间的jquery DOM距离

标签 javascript jquery css-selectors

我有一个包含很多嵌套元素的 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");

但是那会选择 sibling 和侄子。

我不会用

var siblings = root.find(".wrapper>.family");

因为这也将匹配所有三个。

我不能用

var siblings = $(".root>.wrapper>.family");

因为根据模板可能还有其他包装元素。

我正在寻找的是:给定 .root 下的 .brother,通过计算从 .brother 到 .root 的 DOM(分层)距离是否与另一个 .family 的距离匹配来告诉我另一个 .family 是否是“兄弟”。来自 .root 的家庭成员。结果集应仅包含 .brother 和 .sister,但不包含 .nephew。

最佳答案

这可以通过 JQuery.closest() 来完成

它将返回与您的目标元素最接近的匹配元素。

阅读此处的文档:http://api.jquery.com/closest/

关于javascript - 两个节点之间的jquery DOM距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40035017/

相关文章:

javascript - 如何在 POST 请求中以逗号分隔的列表中的 "escape"逗号?

javascript - 所有 ajax 调用完成后的事件

jquery - 向动态元素添加 tabindex

javascript - JS将数组转换为json链表?

javascript - 无法使用 jquery 循环列表

javascript - jQuery:仅选择包含字符串的类?

javascript - 更改标线标签的颜色

html - 具有三个 DIV 的 Flexbox 容器

带标签的 CSS 部分属性选择器

javascript - 通过链接或按钮将传单 map 置于标记的中心