如何在jQuery中找到一个已知类的父类?

我有一个<div>,其中有许多其他<div>,每个都在不同的嵌套级别。我不给每个子<div>一个标识符,而是直接给根<div>标识符。这里有一个例子:

<div class="a" id="a5">
<div class="b">
<div class="c">
<a class="d">
</a>
</div>
</div>
</div>

如果我用jQuery写一个函数来响应类d,我想找到它的父类a的ID,我该如何做到这一点?

我不能简单地执行$('.a').attr('id');,因为有多个类__abc1。我可以找到它的父母的父母的父母的ID,但这似乎是一个糟糕的设计,缓慢,并不是很多态(我将不得不编写不同的代码来寻找类c的ID)。

386332 次浏览

向jQuery 父母函数传递一个选择器:

d.parents('.a').attr('id')

嗯,实际上Slaks的答案是优越的,如果你只想要最接近的祖先匹配你的选择器。

假设this.d,你可以写

$(this).closest('.a');

closest方法返回与选择器匹配的元素的最里面的父元素。

你可以使用父母()来获取给定选择器的所有父元素。

描述:获取每个祖先 元素在当前匹配集中的 元素,可选地由 选择器。< / p >

但是父()将只获取元素的第一个父元素。

描述:获取每个元素的父元素 元素在当前匹配集中的 元素,可选地由 选择器。< / p >

jQuery parent() vs. parents()

还有.parentsUntil (),我认为这将是最好的。

描述:获取每个祖先 元素在当前匹配集中的 元素,直到但不包括

.选择器匹配的元素

使用.parentsUntil ()

$(".d").parentsUntil(".a");

摘自@Resord的评论。这个方法对我很有用,而且更贴近这个问题。

$(this).parent().closest('.a');

谢谢

<div id="412412412" class="input-group date">
<div class="input-group-prepend">
<button class="btn btn-danger" type="button">Button Click</button>
<input type="text" class="form-control" value="">
</div>
</div>

在我的情况下,我使用这个代码:

$(this).parent().closest('.date').attr('id')

希望这能帮助到一些人。