2012-02-07 5 views
13

Diciamo, per esempio, ho un elenco ordinabile:jQuery esegue sempre iterazioni tramite DOM nell'ordine in cui si trovano nel codice?

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

Quello che voglio sapere è, se faccio una chiamata jQuery come la seguente:

$.each($('li'), function(key, item) {...});

mi posso aspettare jQuery per scorrere le voci dall'alto verso il basso? Ho eseguito alcuni test e provato a riorganizzare gli elementi in modo dinamico utilizzando jQueryUI, e fino ad ora sembra funzionare sempre in ordine. Ma può sempre essere previsto? O è una stupida fortuna che non mi sia imbattuto in qualcosa di così lontano da farmi pensare diversamente ...?

+2

Si dovrebbe *. Poi di nuovo, i browser riescono sempre a inserire bug strani ... –

risposta

11

"Posso aspettarmi che jQuery passi attraverso le voci dall'alto verso il basso?"

Sì. Vengono iterati da un indice numerico da 0 a length - 1.

Gli elementi verranno sempre restituiti nell'ordine in cui appaiono nel DOM.

"Ho eseguito alcuni test, e ha cercato gli elementi riordinare in modo dinamico ..."

Non dà in considerazione il posizionamento CSS se è questo che vuoi dire. Se stai modificando la loro posizione effettiva nel DOM, visualizzerai solo gli aggiornamenti se li risiedi nuovamente dal DOM.

+0

Sembrerebbe che jQueryIU sia effettivamente in grado di riposizionare i DOM nel documento. Il risultato finale ideale non è dover assegnare un attributo di ordinamento reale e considerare jQuery con l'ordine corretto dopo che l'utente ordina i DOM –

+1

@KyleMacey Ho fatto affidamento su jquery restituendoli nell'ordine corretto per molte delle mie applicazioni senza problemi . –

+0

@KevinB. Basta essere consapevoli del fatto che jQuery non ha promesso che deve essere ordinato ... – gdoron

4

Non utilizzato, ma dal momento che i selettori jQuery 1.3.2 restituiscono gli elementi nell'ordine in cui si trovano nel DOM.

3

Non esiste un punto in cui i documenti promettano questo comportamento, ma questo è il modo in cui è attualmente implementato.

Detto questo, non vedo un motivo per cui cambierebbero questo comportamento.

+3

Citano il cambiamento nelle note di rilascio 1.3.2, non sono sicuro che sia abbastanza per darti una sfumata sfocatura ma intendono essere conformi alle [API Selectors] (http://www.w3.org/TR/selectors-api /) che specifica di restituire gli elementi nell'ordine DOM. –

+0

@PaoloBergantino Ben giocato. –

+1

+1 punto giusto. Dovrebbero confermarlo nei documenti se è la loro intenzione. –

Problemi correlati