2011-10-19 7 views
2

私はそれが動作していないのはなぜサブクラスを持つjQueryの兄弟ですか?

http://jsbin.com/uyirim/edit#javascript,html

'.divAbs'クラスが含まれている'.divRe'クラスがあり、クリックされた要素の全ての「siblings」を取得したいですか? docsから

(その長さは「」であると仮定する。)

+0

私は英語が母国語ではないかもしれないことを理解していますが、あなたが何を言おうとしているのか分かりません。 – switz

答えて

4

は、任意選択によりフィルタリング整合要素の組の各要素の兄弟を取得します。

リンクの兄弟はdivであり、セレクタ.divRe .divAbsと一致しません。 $('.divRe').is('.divRe .divAbs')falseを返します。あなたが.find()とそれを組み合わせるしたい

$(this).siblings(".divRe").find(".divAbs") 

編集:あなたは.hasの代わり.find後に実際にあるようにされているは思えます。他の答えを見てください。

+0

.divRe .divAbsはdivAbs内にあるすべてのdivReを示します... divAbs ...いいえ? –

+1

@RoyiNamir:セレクタを渡している関数によって異なります。ドキュメントをもう一度読んでください。 '.siblings()'は要素のすべての兄弟のリストを取得します。あなたの場合、唯一の兄弟は 'div'です。セレクタに一致する要素だけを保持し、 'div'は' .divRe .divAbs'と一致しません。この場合、selectorは* finding *要素に*使用されません。すでに存在する要素(兄弟)のセットに対して*フィルタリングするために使用されます。 –

0

セレクタ".divRe .divAbs"は、兄弟ではない内側のdiv .divAbsに一致します。

あなたはhas()使用することができます。.divReが複数のを持っている場合(たとえば2).divAbsこの

$(this).siblings(".divRe").find(".divAbs").length 

戻ります

$(this).siblings(".divRe").has(".divAbs").length 
+0

説明が正しくありません。この文脈では、 '' .divRe .divAbs ''は' divAbs'クラスと 'divRe'クラスを持つ祖先を持つ要素にマッチします。 –

+0

@FelixKlingええ、あなたは書いてあります。 – xdazz

+0

@xdazz、これは正しくありません。 both.aと.b so $( ".a.b")が必要な場合 –

2

を2

が、この

$(this).siblings(".divRe").has(".divAbs").length 

は1を返します。

has()メソッドを使用してください。

関連する問題