2011-03-17 12 views
163

私は<div>を持っていて、その中には多くの他のネストレベルのものがたくさんあります。すべての子供に<div>の識別子を与えるのではなく、むしろルート<div>を識別子として与えます。ここでは例です:jQueryで既知のクラスの親を見つける方法は?

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

私はクラスdに対応するためにjQueryの関数を書いて、私はその親、クラスaのためのIDを検索したい場合は、私はこれを行うだろうか? aが複数あるので、私は単に$('.a').attr('id');を行うことはできません。私は親の親の親のIDを見つけることができましたが、それはデザインが悪く、遅く、ポリモーフィックではないようです(クラスcのIDを見つけるために別のコードを書く必要があります)。

答えて

334

this.dであると仮定すると、あなたは

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

closest methodは、セレクタに一致するあなたの要素の最も内側の親を返します書くことができます。

+0

http://api.jquery.com/closest/ –

+30

キャッチがほとんどないことに注意してください。開始要素がクエリにも一致する場合は、親要素を取得せずに同じ要素を取得します。これは、望ましくない動作である場合とそうでない場合があります。そうでない場合は、私はこれをお勧めします: $(this).parent()。closest( '。a '); – user766304

+1

非常に役に立ちます。私はいつも$(this).parent()。parent()。parent()を使っています。 –

13

はjQueryのparents関数にセレクタを渡します

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

EDITあなただけのセレクタに一致する最も近い祖先をしたい場合はうーん、実際にSlaksの答えは優れています。

+1

これは直接の親ではありません。 – SLaks

+1

@Slaks、そうです。 'parent'から' parents'に更新されました。 –

4

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

説明:必要に応じて セレクタによってフィルタリングマッチ 要素の現在のセット内の各 要素の祖先を取得します。

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

説明:必要に応じて セレクタによってフィルタリングマッチ 要素の現在のセット内の各 要素の親を取得します。

jQuery parent() vs. parents()

そして私が一番になると思う.parentsUntil()があります。

説明:マッチ 要素の現在のセット内の各 要素の祖先を取得し、最大しかしセレクタにマッチ 要素を含みません。

+0

彼は_single_の親だけを望んでいるので、 'closest'を呼び出すべきです。 – SLaks

+1

ありがとう、訂正のために、私は人々に違いを知らせ、私の間違いから理解できるようにここで私の答えを聞かせます。 –

関連する問題