2011-12-30 10 views
10

...jQueryの - に等しい内容ではなく、内容は次のHTMLを考える

<div id="group"> 
    <ul> 
     <li><div class="category">one</div></li> 
     <li><div class="category">one</div></li> 
     <li><div class="category">onetwo</div></li> 
     <li><div class="category">two</div></li> 
    </ul> 
</div> 

が含まれています...私はそのすべて'#group ul li'の要素を選択しますjQueryのセレクタを作成する方法を把握しようとしていますinnerHTMLがいくつかの文字列(例えば "one")に等しい子を'.category'持っています。たとえば、文字列 "one"を指定すると、このセレクタは最初の2つのliを返します。

$('#group ul li')は、Liのすべてが選択されます:

は、ここで私がこれまで持っているものです。次に、私はフィルタリングする必要があります:
$('#group ul li').filter(".category:contains('one')")は、文字列 'one'を含むクラスカテゴリを持つ子を持つようにこれらのliをすべて選択します。しかし、これがと等価であることを確認する方法はありますか?を1にしますか?

私は多分、平等チェックを行い、それをフィルターに渡す私自身の関数を書くと思っていますか?

答えて

20
$('#group ul li div.category').filter(function() {return $(this).text() == "one";}).parent() 

これはおそらく、最も具体的な方法です。 exampleを参照してください。

+0

あなたの例では期待した結果が返されません。 –

+1

あなたは最初の2つの 'li'sを手に入れたいと思っています。あなたの期待している結果は? –

+0

最後に.parent()を見逃していた可能性があります。私の悪い –

4

フィルタ関数を関数の引数で使用できます。ような何か:

$('#group ul li').filter(function() { return $(this).html() == 'one'; }) 
+0

これは近いですが、$(this)はこのカテゴリの子ではなく、これをチェックする必要があります。 –

0

if文が動作するのですか、セレクタを探していますか?これはおそらく...

if ($('#group ul li .category').html() == 'one') 
+0

セレクタを探しています。私は多くの異なる

  • を選択したいと思います。 –

    3

    上記の回答はどれも正しいです。私は私のセレクタとしてこれを使用して終了:

    $('#group ul li').filter(function() { 
        return $(this).children('.category').html() == 'one'; 
    }) 
    

    これを行うには良い方法がありますなら、私が知っていると私は喜んであなたの答えを受け入れるだろうしてください。

    +0

    実際には...あなたの答えは、受け入れられた答えと同じですが、彼はより具体的なものをフィルタリングしていますが、その後はより具体的にフィルタリングしています。私は正直言って、他の方が良い。 – Metropolis

    +0

    受け入れられた回答についてのコメントを参照してください。 –

    関連する問題