jQuery,找到父项

<ul><li><div><div><span id="thisid"></span></div></div></li></ul>

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

那显然是行不通的,但是我该如何获取li元素呢? 我不想使用:

$('#this').parent().parent().parent();

我不想使用它,因为有可能只有一个div元素,而不是两个。 在这种情况下,我将获取ul元素而不是li元素。

asked 2020-08-11T10:21:27Z
7个解决方案
83 votes
$('#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();
  • [HTTP://API.jQuery.com/closest/]
  • [HTTP://API.jQuery.com/parents/]
Andy E answered 2020-08-11T10:21:42Z
7 votes
$('#thisid').parents('li')

或者,如果您只想要第一个:

$('#thisid').closest('li')
davin answered 2020-08-11T10:22:02Z
2 votes

简单,使用parents()

var parents = $("#thisid").parents('li');
Jacob Relkin answered 2020-08-11T10:22:22Z
2 votes
$('#thisid').parents( 'li:eq(0)' ); 

应该做。 这将为您提供第一个(:eq(0))与您要搜索的标签匹配的父级。

Decent Dabbler answered 2020-08-11T10:22:42Z
1 votes
$('li').has('#thisid')

[HTTP://API.jQuery.com/哈市/]

generalhenry answered 2020-08-11T10:23:02Z
1 votes

我更喜欢“最亲密”而不是“父母”。

父级沿着DOM树移动到文档的根元素,将每个祖先元素添加到一个临时集合中。 然后,如果有选择器,则根据选择器过滤该集合。

哪里

最近的向上移动DOM树,直到找到与提供的选择器匹配的对象。

他们产生的最重要的结果是:

父项:返回的jQuery对象包含原始集合中每个元素的零个或多个元素(按相反的文档顺序)。

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

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

跟随此链接

Uzair Xlade answered 2020-08-11T10:23:56Z
0 votes

您可能实际上想使用$("#thisid").closest('li')。这从所选节点遍历DOM树并返回第一个匹配的祖先,而.parents()从父节点出发并返回所有与该过滤器匹配的祖先节点。 浏览此处获取更多信息。

Richard Marskell - Drackir answered 2020-08-11T10:24:17Z
translate from https://stackoverflow.com:/questions/4718409/jquery-find-parent