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') 

http://api.jquery.com/has/

我比“父母”更喜欢“最接近”。

父母将DOM树移动到文档的根元素,将每个祖先元素添加到临时集合; 然后根据select器筛选该集合(如果提供了该select器)。

哪里

最近的向上移动DOM树,直到find与提供的select器匹配的为止。

最重要的是他们给出的结果:

Praents:返回的jQuery对象包含原始集合中每个元素的零个或多个元素,按照反向文档顺序。

最近的:按照文档顺序,返回的jQuery对象包含原始集合中每个元素的零个或一个元素

 $('#thisid').closest('li'); 

按照这个链接

简单,用parents()

 var parents = $("#thisid").parents('li'); 

您可能实际上想要使用$("#thisid").closest('li') 。 这从所选节点遍历DOM树并返回第一个匹配的祖先,而.parents()从父节点传播并返回匹配该filter的所有祖先节点。 在这里看到更多的信息。