2009-08-02 6 views

risposta

27

Per:

<ul> 
    <li>Item 1</li> 
    <li>Item 2 
    <ul> 
     <li>Item 2.1</li> 
     <li>Item 2.2</li> 
    </ul> 
    </li> 
    <li>Item 3</li> 
</ul> 

Per esempio

$("ul > li").addClass("blah"); 

aggiunge classe "bla" per 1 2 e 3 considerando quanto segue:

$("ul li").addClass("blah"); 

aggiuntivo di classe "bla" per ogni elemento della lista .

Non sono sicuro di cosa ti riferisci a < e? operatori.

+3

Gli ul li stabiliscono tutti in "blah"? perché hai una sottocategoria che ha anche figli in un ul. –

+3

> significa bambini immediati, non nipoti o altro. –

+3

ul> li corrisponde anche agli elenchi nidificati –

10

Nei CSS, > significa "figlio diretto di": sono selezionati solo i nodi figli diretti.

Mentre uno spazio significa "qualsiasi discendente di": i bambini e i bambini diretti di quei bambini potrebbero essere selezionati.

Vorrei scommettere che jQuery usa la stessa convenzione.

2

Come già accennato, uno spazio selezionerà qualsiasi discendente, mentre > selezionerà solo i bambini immediati. Se si desidera selezionare solo i nipoti o pronipoti, allora si potrebbe utilizzare questo:

#foo > * > * > .bar 

(tutti gli elementi con classe "bar" che sono pronipoti dell'elemento con id "foo")

2

guarda questo ..

$(".testit > a") //match the first <a> tag below 
$(".testit a") // matches all <a> tag below 

<p class="testit"> 
    <a href="#">All the rules will match this</a> 
    <span> 
    <a href="#">second rule can only select this</a> 
    </span> 
</p>