Nelle lezioni precedenti abbiamo visto come sia possibile, attraverso i selettori CSS, ottenere una collezione di elementi da un documento HTML in modo da poterli manipolare e modificare con jQuery. In alcuni casi, tuttavia, questa collezione potrebbe risultare incompleta oppure poco raffinata per poterci permettere di lavorare al meglio. Inoltre potremmo pensare di utilizzarla come base per attraversare dinamicamente gli altri elementi del DOM e lavorarvi. A queste necessità rispondono una serie di metodi definiti Traversing.
Oltre al metodo .eq()(visto in precedenza), jQuery mette a disposizione alcuni metodi per filtrare la collezione di elementi. Uno dei più utili è sicuramente .filter() che accetta come argomento sia un selettore CSS, sia una funzione. Nel primo caso basterà passare la stringa alla funzione per eliminare tutti gli elementi che non corrispondono alle regole indicate:
$("#contenitore a").filter(".external"); //restituisce solo i link con classe external
In alternativa si può definire una funzione che operi da filtro restituendo true o false. Adattando l'esempio precedente dovremmo scrivere:
$("#contenitore a").filter(function () {
// this rappresenta un singolo elemento
return $(this).hasClass("external");
});
Il metodo opposto a .filter() è .not(), che include tutti gli elementi che NON corrispondono al selettore indicato.
$("#contenitore a").not(".external"); //tutti i link senza classe external
Molto simile a .eq() è .slice(), che opera nello stesso modo del metodo per array nativo in JavaScript, estraendo un specifica porzione della collezione:
$("#contenitore a").slice(0, 2) // solo il primo e secondo link
Chiude il gruppo dei filtri .is(), che accetta un selettore CSS come argomento e restituisce true quando gli elementi rispettano le regole indicate. Questo metodo è particolamente utile nelle strutture di controllo all'interno di cicli .each() per suddividere le operazioni da compiere sugli elementi in base ai valori di this:
$("#contenitore a").each(function () {
if ($(this).is(".external")) {
//codice per link esterni
} else {
//codice per link interno
}
});
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 |