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。 假设element1
和element2
是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