2012-04-19 3 views
14

Qual è la differenza tra queste due dichiarazioni jQuery? Sembrano fare la stessa cosa ottenendo tutti i tag div dei bambini.Qual è la differenza diretta discendente (>) vs. discendente nei selettori jQuery?

$("#mainblock div") 
$("#mainblock > div") 
+3

sono d'accordo con questa domanda viene chiuso come "troppo stretto."Tutti usano jquery in questi giorni e scommetto che la maggior parte degli utenti non è in grado di darti la risposta a questa domanda: com'è troppo stretto/localizzato? – agmin

risposta

16

$("#mainblock > div") = solo i bambino livello

$("#mainblock div") = tutti i Childs + desendents.

+1

Se il nodo che stai cercando è un genitore di mainblock, meglio usare> Oltre a essere più preciso, è anche più veloce. – Neil

3

Il primo otterrà tutta div s discendente di #mainblock. Il secondo sarà ottenere tutti div s che sono figli immediati di #mainblock

2
$("#mainblock div") 

Corrisponde a qualsiasi elemento div che è un discendente di #mainblock.

$("#mainblock > div") 

Corrisponde a qualsiasi elemento div figlio di #mainblock.

controllo http://www.w3.org/TR/CSS2/selector.html

1

Il primo sarà selezionare qualsiasi div che è un figlio di `#mainblock' a qualsiasi livello. Il secondo selezionerà qualsiasi div che è un bambino immediato.

Vedere questo link per ulteriori informazioni sul selettore CSS > che si comporta come in jQuery.

3
$("#mainblock div") 

Questo obiettivo tutti i DIV dentro "#mainblock" Non importa che sia figlio diretto di "#mainblock", o il figlio di figlio di blocco principale o così via.

$("#mainblock > div") 

Questo si rivolgerà solo DIV figlio diretto "#mainblock" e ignorare altri DIV. Questo è più veloce di sopra nel caso in cui tu abbia solo figli diretti. Perché non è cercare di trovare dentro altri elementi di childs.

1

$ ("# mainblock div") trovare tutti i div sotto #mainblock

$ ("# mainblock> div") ha trovato solo il suo bambino

si supponga di avere sotto struttura HTML:

<div id="mainblock"> 
     <div> 
     <div></div> 
     <div></div> 
     </div> 
    <div></div> 
    <div></div> 
    </div> 

Poi

$("#mainblock div").length = 5 
$("#mainblock > div").length = 3