jQuery测试element1是否为element2的后代

Jak*_*ake 41 jquery

有没有人知道一种好方法来测试存储在var中的一个元素是否是另一个元素的后代,也存储在var中?

我不需要element1.isChildOf('selector'),这很容易.
我需要element1.isChildOf(element2)

element2.find(element1).size() > 0 似乎没有用.

我不想写一个插件.each用于测试每个孩子,如果我可以避免它.

Max*_*keh 71

如果你正在使用1.4,并且正在寻找一个后代而不是一个孩子,就像你的find()例子所暗示的那样,有一种has()方法:

element2.has(element1).length > 0
Run Code Online (Sandbox Code Playgroud)


cle*_*tus 7

你可以用index()它.如果元素不在集合中,它将返回-1.假设element1并且element2是DOM元素而不是 jQuery对象:

if ($(element2).children().index(element1) != -1) {
  // it's a child
}
Run Code Online (Sandbox Code Playgroud)

为了完整性,要测试某些东西是否是一个后代而不仅仅是一个孩子,它也可以用于它:

if ($(element1).parents().index(element2) != -1) {
  // element1 is a descendant of element2
}
Run Code Online (Sandbox Code Playgroud)


Don*_*ghn 6

从Jquery 1.6开始,您可以通过以下方式确定jquery对象是否是另一个jquery对象的子对象:

element2.is(element1.children());
Run Code Online (Sandbox Code Playgroud)

另外值得注意的是,既然is()现在接受了几个不同的参数(第一个参数可以是函数,jQuery选择器或DOM元素),你就不能把它简单地想象为"是",而是"正在或正在".