如何在jQuery中找到具有已知类的父级?

IT技术 javascript jquery html dom parent
2021-02-06 14:47:14

我有一个里面<div>有很多其他<div>的,每个都在不同的嵌套级别。<div>不是给每个孩子一个标识符,而是给根<div>标识符。下面是一个例子:

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

如果我在 jQuery 中编写一个函数来响应 classd并且我想找到它的父级 class 的 ID,a我该怎么做?

我不能简单地做$('.a').attr('id');,因为有多个类a我可以找到它的父母的父母的 ID,但这似乎设计不佳,速度慢,而且不是很多态(我必须编写不同的代码来查找 class 的 ID c)。

6个回答

假设this是这样.d,你可以写

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

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

请注意,有一点要注意:如果您的起始元素也与查询匹配,则您不会获得父元素,而是获得相同的元素。这可能是也可能不是想要的行为。如果没有,我推荐这个: $(this).parent().closest('.a');
2021-04-11 14:47:14
很有帮助。我总是使用 $(this).parent().parent().parent() 并且我知道有更好的解决方案。
2021-04-13 14:47:14

将选择器传递给 jQuery函数:

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

编辑嗯,如果您只想要与您的选择器匹配的最接近的祖先,实际上 Slaks 的答案会更好。

您可以使用parents()获取具有给定选择器的所有父级。

描述:获取当前匹配元素集合中每个元素的祖先,可选地由选择器过滤。

但是parent()只会得到元素的第一个父元素。

描述:获取当前匹配元素集合中每个元素的父元素,可选地由选择器过滤。

jQuery parent() 与 parent()

还有.parentsUntil()我认为它是最好的。

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

他只想一个单一的父母,所以他应该打电话closest
2021-03-18 14:47:14

摘自上面@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')

希望这有助于某人。