<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を見つけたい場合、どうすればよいでしょうか。
複数のクラスa
sがあるため、$('.a').attr('id');
を単純に実行することはできません。私はその親の親の親のIDを見つけることができましたが、それは貧弱なデザイン、遅い、そしてあまり多態的ではないようです(クラスc
のIDを見つけるために別のコードを書く必要があります).
セレクタをjQuery 保護者 関数に渡します。
d.parents('.a').attr('id')
EDITうーん、実際にあなたのセレクタにマッチする最も近い祖先だけが欲しいならSlaksの答えは優れています。
指定したセレクタを持つすべての親を取得するには、 保護者() を使用できます。
説明:現在一致している要素の集合内の各要素の先祖を取得し、必要に応じてセレクタでフィルタリングします。
しかし parent() は要素の最初の親だけを取得します。
説明:現在一致している要素のセット内の各要素の親を取得し、必要に応じてセレクタでフィルタ処理します。
そして 。parentUntil() があり、それが一番良いと思います。
説明:現在一致している要素のセット内の各要素の先祖を、セレクタで一致した要素まで(ただし、それを含まないで)取得します。
.parentsUntil()を使用します
$(".d").parentsUntil(".a");