web-dev-qa-db-ja.com

jQueryで既知のクラスを持つ親を見つける方法は?

<div>には、他の<div>が多数含まれています。それぞれのネスティングレベルは異なります。すべての子に<div>という識別子を与えるのではなく、私は単にルート<div>に識別子を与えるだけです。例を示しましょう。

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

クラスdに応答するようにjQueryで関数を作成し、その親であるクラスaのIDを見つけたい場合、どうすればよいでしょうか。

複数のクラスasがあるため、$('.a').attr('id');を単純に実行することはできません。私はその親の親の親のIDを見つけることができましたが、それは貧弱なデザイン、遅い、そしてあまり多態的ではないようです(クラスcのIDを見つけるために別のコードを書く必要があります).

203
John Smith

this.dであると仮定すると、

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

closestメソッド は、セレクタに一致する要素の最も内側の親を返します。

411
SLaks

セレクタをjQuery 保護者 関数に渡します。

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

EDITうーん、実際にあなたのセレクタにマッチする最も近い祖先だけが欲しいならSlaksの答えは優れています。

19
Drew Noakes

指定したセレクタを持つすべての親を取得するには、 保護者() を使用できます。

説明:現在一致している要素の集合内の各要素の先祖を取得し、必要に応じてセレクタでフィルタリングします。

しかし parent() は要素の最初の親だけを取得します。

説明:現在一致している要素のセット内の各要素の親を取得し、必要に応じてセレクタでフィルタ処理します。

jQuery parent()と両親()

そして 。parentUntil() があり、それが一番良いと思います。

説明:現在一致している要素のセット内の各要素の先祖を、セレクタで一致した要素まで(ただし、それを含まないで)取得します。

4
Amr Elgarhy

.parentsUntil()を使用します

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