2011-07-07 13 views
1

は、私がHTMLに持っているもののサンプルです:jQueryのセレクタ

<span class="a">Test</span> 
<div class="b"> 
    <div id="x_ABC">ABC must NOT be hidden</div> 
    <div id="x_DEF">DEF must be hidden</div> 
    <div id="x_GHI">GHI must be hidden</div> 
    <div id="JKL">JKL must NOT be hidden</div> 
</div> 

私が欲しいのは、jQueryを使ってのすべてのdivを非表示にすることですクラス "b"を持つdiv内の "x"で始まり、クラス "a"を持つhtmlタグで始まるid。

私はこのコードを試してみました:

$('.a + div.b div[id^=x]:gt(0)').hide() 

をしかし、それは私がやりたいことはありません。誰かがクラス "a"、 "b"、 "id^= x"だけを使ってセレクタを修正する方法を知っていますか?

ありがとうございました!属性セレクタで

答えて

1

引用符は必須です。あなたはx引用符で囲む必要

$('.a + div.b div[id^="x"]').slice(1).hide() 
+0

まあ、と同じくらい簡単だと思う私がいることを書きました: '$(」 .a + div.b div [id^= "x"] ')。hide() '(これはすべての関係するdivを隠します)。それにもかかわらず、私は引用符を追加します... 私の正確な問題が見つかりました。私はサイトjQuery1.4.4を使用して変更し、あなたの例は、その古いバージョンでは動作しません。今更新する必要があります!ありがとうございました! – Guile

+0

@Guile:?どういう意味ですか?今説明したセレクタには、値の周りに引用符があります。 –

+0

さらに、.slice(1)のパフォーマンスチップをありがとう!これは素晴らしいものです! – Guile

0

ただ、それ以上の機能の代替:

$('div.b').each(function(_, b) { 
    var $b = $(b); 

    if($b.prev().hasClass('a')) { 
     $b.children().slice(1).filter(function() { return this.id.charAt(0) === 'x' }).hide(); 
    } 
}); 
0

は、私はそれが(彼らは必須であっても)それが働いた引用符この

$('.a + .b > *[id^="x"]:nth-child(n+2)').hide();