JQuery,find父
<ul><li><div><div><span id="thisid"></span></div></div></li></ul> $('#thisid').parent('li');
这显然不起作用,但我如何抓住李元素? 我不想用:
$('#this').parent().parent().parent();
我不想使用它,因为可能发生只有一个div元素,而不是两个。 在这种情况下,我会抓取ul元素而不是li元素。
$('#thisid').parents('li'); // ^ plural!
请注意,如果您只想要祖先中的第一个<li>
元素,则应该使用closest()
:
$('#thisid').closest('li'); // `closest()` is equivalent to (but performs better than) $('#thisid').parents('li').eq(0); $('#thisid').parents('li').first();
$('#thisid').parents('li')
或者如果你只想要第一个:
$('#thisid').closest('li')
$('#thisid').parents( 'li:eq(0)' );
应该这样做。 这会给你第一个( :eq(0)
)的父母匹配是你正在寻找的标签。
$('li').has('#thisid')
我比“父母”更喜欢“最接近”。
父母将DOM树移动到文档的根元素,将每个祖先元素添加到临时集合; 然后根据select器筛选该集合(如果提供了该select器)。
哪里
最近的向上移动DOM树,直到find与提供的select器匹配的为止。
最重要的是他们给出的结果:
Praents:返回的jQuery对象包含原始集合中每个元素的零个或多个元素,按照反向文档顺序。
最近的:按照文档顺序,返回的jQuery对象包含原始集合中每个元素的零个或一个元素
$('#thisid').closest('li');
按照这个链接
简单,用parents()
var parents = $("#thisid").parents('li');
您可能实际上想要使用$("#thisid").closest('li')
。 这从所选节点遍历DOM树并返回第一个匹配的祖先,而.parents()
从父节点传播并返回匹配该filter的所有祖先节点。 在这里看到更多的信息。