jquery'包含'用于DOM元素而不是选择器

时间:2009-11-23 11:29:51

标签: jquery

我想知道DOM元素a是否包含DOM元素b(即,如果a是DOM树中b的祖先)。因此,像:

$(b).closest(a);

但是'a'在这里是一个DOM节点,而不是选择器。

jQuery可以帮忙吗?我可以找到的所有有用的函数都使用选择器字符串而不是元素,如果你的DOM元素是匿名的,那么它们确实无济于事。

2 个答案:

答案 0 :(得分:1)

以下是Traversing的文档。我建议您使用:

  • find()找到特定类型的后代,可能从文档本身开始
  • parents()从x元素
  • 开始在DOM树中查找特定类型的父类

答案 1 :(得分:0)

啊哈,我在搜索时失败了但是一位同事发现答案已经在Testing objects for ancestor/descendent relationship in JavaScript or Jquery,但问题是以一种不同的方式提出来,我没有找到它:

if ($(obj1).parents().index(obj2) >= 0) {
    // obj1 is a descendant of obj2
}

仍然没有我期望的那么高效(但是'找到所有的父母,然后检查一场比赛',而不是'加强树寻找比赛')。

还有 http://plugins.jquery.com/project/ancestry,它提供了我正在谈论的功能。

更新

if($(obj1).parents.eq(obj2)) { ...

也有效,并且略微整洁。父列表不太可能那么长,所以这应该是相当有效的。