2011-12-30 16 views
10

Dato il seguente codice HTML ...jQuery - contenuto pari, piuttosto che il contenuto contiene

<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> 

... Sto cercando di capire come fare un selettore in jQuery che selezionerà tutti gli elementi che '#group ul li' avere un bambino '.category' con innerHTML uguale a qualche stringa (ad esempio "uno"). Ad esempio, data la stringa "uno", questo selettore restituirebbe i primi due.

Ecco quello che ho finora:

$('#group ul li') sarà selezionare tutto il Li. Poi ho bisogno di filtrare:
$('#group ul li').filter(".category:contains('one')") selezionerà tutti questi li, quali che essi hanno un bambino con categoria di classe che contiene la stringa 'uno'. Tuttavia, non v'è alcun modo per verificare che questo è uguale a uno?

Sto pensando, forse, di scrivere solo la mia funzione che controlla l'uguaglianza e passa quella per filtrare?

risposta

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

Questo è probabilmente il modo più specifico. Vedi example.

+0

L'esempio non restituisce i risultati previsti? –

+1

Volevi ottenere i primi due 'li's e lo fa esattamente. Qual è il tuo risultato previsto allora? –

+0

Potrebbe essermi perso il .parent() alla fine ... il mio male –

4

È possibile utilizzare la funzione di filtro con un arguement funzionale. Qualcosa di simile:

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

Questo è vicino, ma $ (questo) dovrebbe essere il controllo della categoria figlio, non il ... –

0

sarebbe un lavoro se dichiarazione, o siete alla ricerca di un selettore? come affermazione, questo potrebbe fare ...

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

Sto cercando un selettore, vorrei selezionare molti diversi

  • 's. –

    3

    Nessuna delle risposte sopra sono esatte. Ho finito per usare questo come il mio selettore:

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

    Si prega di farmi sapere se c'è un modo migliore per fare questo e Accetterò volentieri la vostra risposta.

    +0

    In realtà .... La tua è la risposta accettata, eccetto che il suo filtro è più specifico in primo piano, e il tuo è un filtro più specifico dopo. Sinceramente mi piace l'altro. – Metropolis

    +0

    Vedere il commento sulla risposta accettata. –

    Problemi correlati