jQuery mette a disposizione molti metodi per spostarsi all'interno del documento HTML modificando dinamicamente il numero e la tipologia di elementi della collezione. Prima di elencarne i più importanti, è importante definire la funzione di .end() e .andSelf().
Il primo serve a ripristinare la collezione alla sua struttura originaria, cioè a reintegrare tutti gli elementi raccolti con il selettore passato a $(), eccone un esempio:
var lista = $("#menu li"); //tutti i tag li
lista.find("a"); //tutti i tag a contenuti nei tag li
lista.end(); //ripristino i tag li
Questa funzione permette, in poche parole, di ritornare indietro nella selezione al punto di partenza.
Il secondo metodo da ricordare è .andSelf(), con il quale possiamo includere gli elementi di partenza della selezione dentro la nuova selezione generata da uno dei metodi di traversing:
var lista = $("#menu li"); //tutti i tag li
lista.find("a"); //tutti i tag a contenuti nei tag li
lista.andSelf(); //tutti i tag a ed i tag li
Nonostante vi sia un numero considerevole di metodi traversing, solo alcuni vengono utilizzati spesso. Anzitutto .find() ricerca elementi figli all'interno della collezione attuale secondo il selettore CSS passato come argomento. Diversamente .add() aggiunge gli elementi selezionati alla collezione corrente senza tener conto della loro posizioen nel DOM.
Molto simile a .find() è .children(), che tuttavia ricerca solo gli elementi direttamente contenuti (discendenti) in quelli della collezione:
$("#menu").find("li"); // tutti i tag li
$("#menu").children("li"); // tutti i tag li del primo livello
Ecco un esempio pratico di questi metodi.
Per risalire l'albero del documento sono disponibili .parent() e .parents(): ambedue ricercano gli elementi contenitori di quelli presenti nella collezione ed accettano un selettore come filtro opzionale per raffinare la ricerca. L'unica differenza è che .parent() si ferma al primo livello trovato, mentre .parents() risale tutto l'albero (esempio).
A partire dalla versione 1.3 jQuery offre inoltre il metodo .closest(), che opera nello stesso modo di .parent() includendo nella ricerca anche l'elemento corrente. Questo metodo è molto utile nel caso l'elemento originario sia this:
$(this).closest("li"); //il primo li genitore trovato anche se è this
Se è possibile scendere e risalire l'albero del documento è anche possibile spostarsi fra gli elementi contigui (sibling) che precedono o seguono quelli della collezione. Per questo scopo possiamo utilizzare rispettivamente .prev() o .next(). Anche questi due metodi accettano un selettore CSS come filtro ed inoltre permettono di selezionare tutti gli elementi contigui con .prevAll() e .nextAll(). Infine attraverso .siblings() possiamo selezionare gli elementi adiacenti sia precedenti che seguenti (esempio).
Una volta comprese le possibilità del traversing è anche possibile comporre catene complesse di metodi jQuery per lavorare su molti elementi partendo da una collezione di base. In questo caso è anche importante seguire delle regole di scrittura del codice che lo rendano leggibile. Solitamente una catena segue queste convenzioni:
$(selettore)
.find(selettore).css([...])
.end()
.find(altroselettore).attr([...])
.next().attr([...])
Ricordatevi comunque che non tutti i metodi jQuery sono concatenabili, ma solo quelli che non restituiscono un valore (array stringa o boolean che sia).
//rimuovere l'attributo target da tutti gli elementi della collezione
$("#menu li a").removeAttr("target");
PhantomJS, headless browser per test con JavascriptIl tool ideale per realizzare, da terminale, operazioni in remoto su... |
Creare e leggere QR Code in JavaScriptApplicazioni 'QR Code enabled' per il Web e per il mobile,... |
Jquery UI Map: web-mapping con Google Maps e jQueryUn plugin di jQuery UI per intefacciare applicaizoni Web/mobile con... |
Scrollorama e Scrolldeck, slideshow d'effetto con jQueryPlugin jQuery per ottenere Slideshow con diversi effetti di scrolling |
jCanvas, un primo semplice graficoAlla scoperta della libreria jCanvas, per semplificare il disegno e... |
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |