<ul><li><div><div><span id="thisid"></span></div></div></li></ul>
$('#thisid').parent('li');
显然不起作用,但我如何抓住li元素?我不想用:
$('#this').parent().parent().parent();
我不想使用它,因为可能只有一个div元素而不是两个。在这种情况下,我会抓住ul元素而不是li元素。
答案 0 :(得分:83)
$('#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();
答案 1 :(得分:7)
$('#thisid').parents('li')
或者如果你只想要第一个:
$('#thisid').closest('li')
答案 2 :(得分:2)
简单,使用parents()
var parents = $("#thisid").parents('li');
答案 3 :(得分:2)
$('#thisid').parents( 'li:eq(0)' );
应该这样做。这将为您提供与您正在搜索的标记匹配的第一个(:eq(0)
)父级。
答案 4 :(得分:1)
$('li').has('#thisid')
答案 5 :(得分:1)
我更喜欢'最接近'而不是'父母'。
父母将DOM树向上移动到文档的根元素,将每个祖先元素添加到临时集合中;然后,如果提供了一个选择器,它会根据选择器过滤该集合。
,其中
最近移动DOM树,直到找到所提供选择器的匹配项。
最重要的是他们在结果中提供的内容:
Praents:返回的jQuery对象包含原始集中每个元素的零个或多个元素,反向文档顺序。
最近:返回的jQuery对象包含原始集中每个元素的零个或一个元素,按文档顺序
$('#thisid').closest('li');
答案 6 :(得分:0)
您实际上可能想要使用$("#thisid").closest('li')
。这将从所选节点遍历DOM树并返回第一个匹配的祖先,而.parents()
从父节点传播并返回与该过滤器匹配的所有祖先节点。有关详细信息,请参阅here。