2016-03-28 2 views
0

他のすべてのDOM要素を、現在のクラスを除くすべてのコンテナ内の特定のクラスで扱いたいと思います。 notメソッドの中で兄弟にトラバースできますか? (すでに正しい答えを得た後...)jQuery:not()メソッド内をトラバースできます

<div class="x"> 
    <div class="a"></div> 
    <div class="b"></div> 
    <div class="c"></div> 
    <div class="d"></div> 
</div> 
<div class="y"> 
    <div class="a"></div> 
    <div class="b"></div> 
    <div class="c"></div> 
    <div class="d"></div> 
</div> 
<div class="z"> 
    <div class="a"></div> 
    <div class="b"></div> 
    <div class="c"></div> 
    <div class="d"></div> 
</div> 

EDIT:

例のコード構造(すべてのdivはここに残っている一部のコンテンツを持っている)(申し訳ありませんが、私はミスを犯しました私の質問この構造例に私の本当の状況を転送):

クラス.bと第二の要素をクリックcolor(すなわちセレクタ$('.y .b')、私は(実際にをリセット設定したいと思います)他の2つの要素、すなわちセレクタ$('.x .d')および$('.z .d')のクラス.dについては、実際の状況では、はるかに多くの要素があります。それ以外の方法では長すぎる(そしてすべての異なる)セレクタを避けたいと思います。

だから私は

$('.b').click(function(){ 
    $('.d').not(siblings()).css('backgroundColor', '#d8a'); 
    }) 

のようなものを考えていますしかし、それは動作しません。助言がありますか?

+1

のように行うことができる。兄弟()' – smerny

+0

私は混乱しました。あなたが '$("。x .b ")'をクリックしたときに何をしたいのですか? –

+0

なぜあなたはこれを行うことはできません: '$( '.b').css( 'backgroundColor'、 '#d8a');'?これはその兄弟に影響しません – zgood

答えて

2

コードでは、スタンドアロンのsiblings()関数を呼び出そうとしていましたが(jQueryオブジェクトの関数ではありません)、jsコンソールで参照エラーが発生している可能性があります。siblingsは定義されていません。

.dのすべてを選択するには、マイナスの現在の要素の兄弟は、あなたがこのような何かを行うことができます:これは、ように見える JSFiddle

$('.d').not($(this).siblings()).css('backgroundColor', '#d8a'); 

まさにあなたがあなたのjsをどうしようとしていた、とを選択しますすべて.dページ全体を除き、対象要素の直接の兄弟です。


実際のDOMは、例のように単純である場合、あなたはおそらく唯一の親の兄弟の.d子供を選択します。あなたはどちら `$()、`兄弟を() `ない呼び出している...

$(this).parent().siblings().children('.d').css('backgroundColor', '#d8a'); 
+0

正確に - ありがとうございます! – Johannes

+0

これを行うにはもっと良い方法があるように思えます... – epascarello

+0

は実際のdomとこのjsが置かれている場所に依存します – smerny

関連する問題