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


242

我有一个<div>包含多个其他<div>的,每个处于不同的嵌套级别。与其给每个孩子<div>一个标识符,不如给根节点<div>一个标识符。这是一个例子:

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

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

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

Answers:


488

假设this.d,您可以编写

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

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


47
请注意,这里几乎没有什么收获:如果起始元素也与查询匹配,那么您不会得到父元素,而是得到相同的元素。可能会或可能不会希望这样做。如果没有,我建议这样做:$(this).parent()。closest('。a');
Risord

1
很有帮助。我总是用来做$(this).parent()。parent()。parent(),我知道有更好的解决方案。
Wang'l Pakhrin


8

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

描述:获取当前匹配元素集中每个元素的祖先,可以选择使用选择器进行过滤。

parent()只会获得元素的第一个父元素。

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

jQuery parent()与父母()

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

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


他只想一个单一的父母,所以他应该打电话closest
Slaks 2011年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.