2009-08-02 2 views

Antwort

27

Für:

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

Zum Beispiel

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

fügt class "bla" auf 1, 2 und 3, während:

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

Klasse hinzufügen "bla" auf jedes Listenelement .

Ich bin mir nicht sicher, was Sie mit < und? Betreiber.

+3

Setzt ul> li alle von ihnen auf "blah"? weil du eine unterliste hast, die auch li kinder in einer ul hat. –

+3

> bedeutet sofortige Kinder, keine Enkel oder mehr. –

+3

ul> li stimmt mit den verschachtelten Listen überein –

10

In CSS, > bedeutet "direkte Kind von": nur Knoten, die direkte Kinder sind ausgewählt sind.

Während ein Leerzeichen bedeutet "irgendein Abkömmling von": direkte Kinder und Kinder dieser Kinder könnten ausgewählt werden.

Ich würde wetten jQuery verwendet die gleiche Konvention.

2

Wie bereits erwähnt, wählt ein Leerzeichen einen beliebigen Nachfolger aus, während > nur unmittelbar untergeordnete Elemente auswählt. Wenn Sie nur Enkel oder Urenkel auswählen möchten, dann können Sie diese verwenden:

#foo > * > * > .bar 

(alle Elemente mit Klasse „bar“, die Urenkel des Elements mit der ID „foo“) sind

2

sieh dir das an.

$(".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>