jQuerytestingelement1是element2的后代

有谁知道一个好的方法来testing,如果一个元素,存储在一个变种,是另一个的后裔,也存储在一个变种?

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

element2.find(element1).size() > 0似乎没有工作。

我不想编写一个插件的使用。每个孩子,如果我可以避免它。

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

 element2.has(element1).length > 0 

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

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

为了完整起见,为了testing某个事物是否是一个后代而不仅仅是一个孩子,它也可以被用于:

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

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

 element2.is(element1.children()); 

另外值得注意的是,由于is()现在接受了几个不同的参数(第一个参数可以是一个函数,jQueryselect器或DOM元素),所以你不能简单地把它看作“是”,而是“is or is在”。

我知道这个线程是旧的,但是这也适用于,如果你想不向下检查:

 function isElementChildOf(childElement, parentElement) { return 0 !== $(childElement).parents(parentElement).length; } 

这是一个工作的例子

如果element1是element2的子元素,换句话说element1有一个父元素,即element2,则这是true

 $(element1).parents(element2).length 

这种方式是不行的 ,如果父母有更多的孩子( 假设他们是input的 ):

 $(element2).children(element1).length