2013-05-03 6 views
5

が分からない場合は、親の積み重ねを避けるためにどのように...jQueryの:親()回3 - 私はこの問題への迅速な答えを見つけることができませんでしたセレクタ

私は、クリックイベント内だと、 $(this)

私は3つのレベルの要素を選択しようとしているが、それはどのセレクターを持っているかわからない。

$(this).parent().parent().parent().attr('id') 

これは正常に動作しますが、これをやってより良い方法はありますか?

parent(3x)またはそれに類するもの?

+2

マイナーニックピック時間:IDを取得するために '.attr()'ではなく.prop()を使用してください。 –

+0

@AnthonyGristでも、idは属性ではなく、属性ですか? –

+2

@roasted - id属性がHTMLで使用されている場合、その両方です。 idプロパティは常に存在し、属性が変更されると変更されます。 prop()を使用する方が、HTML属性ではなく要素のプロパティを検索するため、処理が高速になります。 sidenoteとして、DOMの大きさに応じて、すべての回答が親()を使用するように見えますが、実際には高額になる可能性があります。いくつかのソートの識別子を追加し、closest()を使う方が良いでしょう。 – adeneo

答えて

20

eq()parents()と試してみてください。 eq()はゼロベースのインデックスであるため、最初の要素はゼロのインデックスを持ち、3番目の要素は2つのインデックスを持ちます。

$(this).parents().eq(2).attr('id'); 

.parents()メソッドは、私たちはDOMツリーにこれら 要素の先祖を検索し、最高の直接の親から注文 整合素子から新しいjQueryオブジェクトを構築することができます。このように、外側のものに最も近い親から順に返され 要素、 Reference

2

あなたも試すことができます。

$(this).parents(':eq(2)'); //and then get ID 
関連する問題