jQuery esplora - metodo filter()

Esempio

Cambia il colore di tutti i div e aggiungi un bordo alla classe "middle":

$("div").css("background", "#c8ebcc")
  .filter(".middle")
  .css("border-color", "red");

Prova a farlo tu stesso

Definizione e uso

Il metodo .filter() riduce la raccolta degli elementi che corrispondono al selettore specificato.

Sintassi

.filter(selector)
Parametro Descrizione
selector Valore di stringa, che contiene l'espressione del selettore per abbinare la raccolta corrente di elementi.

Spiegazione dettagliata

Se viene fornito un oggetto jQuery che rappresenta una raccolta di elementi DOM, il metodo .filter() costruisce una nuova raccolta jQuery di subset di elementi che corrispondono al selettore. Il selettore utilizzato testa ogni elemento; tutti gli elementi che corrispondono al selettore vengono inclusi nel risultato.

Pensa a questa pagina con una lista semplice:

<ul>
  <li>elemento della lista 1</li>
  <li>elemento della lista 2</li>
  <li>elemento della lista 3</li>
  <li>elemento della lista 4</li>
  <li>elemento della lista 5</li>
  <li>elemento della lista 6</li>
</ul>

Possiamo applicare questo metodo a questa raccolta di elementi della lista:

$('li').filter(':even').css('background-color', 'red');

Prova a farlo tu stesso

Il risultato di questa chiamata è che viene impostato il colore di sfondo a rosso per gli elementi 1, 3, 5, perché tutti e tre corrispondono al selettore (ricorda, :even e :odd utilizzano un index basato su 0).

Utilizzo della funzione di filtraggio

La seconda forma di questo metodo è quella di filtrare gli elementi tramite una funzione invece che tramite selettore. Per ogni elemento, se la funzione restituisce true, l'elemento viene incluso nella raccolta filtrata; altrimenti, viene escluso.

Vediamo questo pezzo di HTML leggermente più complesso:

<ul>
  <li><strong>lista</strong> elemento 1 - una etichetta strong</li>
  <li><strong>lista</strong> elemento <strong>2</strong>
   - due <span>etichette strong</span></li>
  <li>elemento della lista 3</li>
  <li>elemento della lista 4</li>
  <li>elemento della lista 5</li>
  <li>elemento della lista 6</li>
</ul>

Possiamo selezionare questi elementi della lista e poi filtrarli in base al loro contenuto:

$('li').filter(function(index) {
  return $('strong', this).length == 1;
).css('background-color', 'red');