Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Traversing

Attraversare gli elementi del DOM per lavorarci: le basi
Attraversare gli elementi del DOM per lavorarci: le basi
Link copiato negli appunti

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.

Filtrare la collezione

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 }
});

Ti consigliamo anche