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

时间:2011-03-17 00:29:23

标签: javascript jquery html dom parent

我有一个<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');,因为有多个类a。我可以找到它的父母的父母的ID,但这似乎设计很差,速度慢,而且不是非常多态(我必须编写不同的代码来查找类c的ID)。

6 个答案:

答案 0 :(得分:408)

假设this.d,您可以写

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

closest method返回与选择器匹配的元素的最内层父级。

答案 1 :(得分:19)

将选择器传递给jQuery parents函数:

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

编辑嗯,如果你只想要与你的选择器匹配的最近的祖先,那么Slaks的答案是优越的。

答案 2 :(得分:4)

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

  

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

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

  

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

jQuery parent() vs. parents()

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

  

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

答案 3 :(得分:1)

摘自上面@Resord的评论。这对我有用,并且对这个问题更感兴趣。

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

谢谢

答案 4 :(得分:1)

<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')

答案 5 :(得分:-1)

使用.parentsUntil()

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