# Tutorial jQuery.each: come utilizzare le iterazioni in JavaScript

In questo breve tutorial vi mostriamo come utilizzare il metodo jQuery.each() in JavaScript per iterare un gruppo di elementi ed eseguire azioni.

## Che cos’è jQuery.each()?

JQuery.each() è un metodo della libreria jQuery di JavaScript. Serve per **iterare su un insieme di elementi, come array o oggetti** ed eseguire determinate azioni. Perciò, .each() è molto utile per manipolare il [Document Object Model (DOM)](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/document-object-model-dom/ "Document Object Model (DOM)"), l’interfaccia tra HTML e JavaScript. Nel nostro [tutorial su jQuery](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/tutorial-di-jquery-installazione-e-primi-passi/ "Tutorial di jQuery: installazione e primi passi") scoprirete come integrare questa famosa libreria.

## La sintassi di jQuery.each()

Tramite .each(), ciascun elemento di un insieme viene iterato e viene eseguita una funzione per ogni iterazione. Si distinguono due tipi di .each(). La sintassi generica si presenta come segue:

```jQuery
$.each(object, callback)
```

In questo caso, “object” è un array o un oggetto, mentre “callback” è la funzione richiamata in ogni passaggio. Quest’ultima ha come parametri **l’indice o la chiave dell’elemento** e l’elemento stesso. In un array l’indicizzazione degli elementi parte dalla posizione 0.

Nel seguente esempio, tutti gli elementi dell’array “arr” vengono esaminati e in ciascuna iterazione vengono visualizzati nella console l’indice e il valore.

```jQuery
var arr = ["blue", "yellow", "red"];
$.each(arr, function(index, value) {
    console.log(index + ": " + value);
});
```

Questo sarà l’aspetto dell’output:

```jQuery
0: blue
1: yellow
2: red
```

Per selezionare elementi del DOM, si ricorre a .each() con i [selettori di jQuery](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/selettori-jquery/):

```jQuery
$(selector).each()
```

Di seguito, tutti gli elementi dell’elenco “alphabet” non ordinato vengono selezionati e la loro posizione e il loro contenuto vengono visualizzati tramite la console. La **parola chiave “this”** indica l’elemento.

```jQuery
<ul id="alphabet">
    <li>a</li>
    <li>b</li>
    <li>c</li>
</ul>
```

```jQuery
$("li").each(function(index) {
    console.log( index + ": " + $(this).text() );
});
```

Ciò porta al seguente output:

```jQuery
0: a
1: b
2: c
```

## Esempi di utilizzo del metodo

Utilizzando jQuery.each() si possono eseguire manipolazioni complesse del DOM.

N.B. A volte, è opportuno ricorrere all’iterazione implicita invece che a .each(), perché anche alcuni metodi jQuery iterano tutti gli elementi di un gruppo.

La funzione **[.addClass()](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/jquery-addclass/)** abbinata a .each() consente di aggiungere lo stesso nome di classe a tutti gli elementi div:

```jQuery
<div class="header"></div>
<div class="main"></div>
<div class="footer"></div>
```

```jQuery
$("div").each(function() {
    $(this).addClass("container");
});
```

Ne risulta il seguente output:

```jQuery
<div class="header container"></div>
<div class="main container"></div>
<div class="footer container"></div>
```

Lo stesso codice può essere abbreviato mediante iterazione implicita:

```jQuery
$("div").addClass("container");
```

.each() risulta particolarmente utile in caso di eventi JavaScript. Di seguito riportiamo un esempio in cui un evento di clic cambia il colore degli elementi div. In alternativa, **il codice può essere incluso direttamente all’interno del tag script del documento HTML**. In un primo momento, il colore dei contenitori è impostato su “green”. Facendo clic all’interno del documento, la condizione viene valutata e il valore del colore viene modificato in “red”. Con un altro clic, la proprietà “color” torna al valore predefinito di “green”.

```jQuery
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Demo</title>
    <style>
    div {
        color: green;
        text-align: center;
        cursor: pointer;
        width: 300px;
    }
    </style>
    <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<div>Fare clic qui</div>
<div>per modificare</div>
<div>il colore.</div>
<script>
$(document.body).click(function() {
    $("div").each(function(i) {
        if (this.style.color !== "red") {
            this.style.color = "red";
        } else {
            this.style.color = "";
        }
    });
});
</script>
<div class="hash d-none" hidden>hash_37d0e9133681b4a0bac2f2781579e08c7c7baa6e</div><script data-shy-copy-guard>(function(){var C=[0x00AD,0x200B,0x200C,0x200D,0x2060,0xFEFF];var s=function(t){for(var i=0;i<C.length;i++){t=t.split(String.fromCharCode(C[i])).join("");}return t;};document.addEventListener("copy",function(e){var sel=document.getSelection();if(!sel||sel.isCollapsed||!e.clipboardData){return;}e.clipboardData.setData("text/plain",s(sel.toString()));try{var d=document.createElement("div");d.appendChild(sel.getRangeAt(0).cloneContents());e.clipboardData.setData("text/html",s(d.innerHTML));}catch(x){}e.preventDefault();});})();</script></body>
</html>
```

Con jQuery.each() si possono inoltre realizzare transizioni o animazioni. Nel presente esempio, gli elementi dell’elenco “numbers” ricevono un colore di sfondo blu quando si verifica un evento di clic e vengono nascosti uno dopo l’altro in seguito a un intervallo di tempo basato sull’indice.

```jQuery
<ul id="numbers">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>
```

```jQuery
$("#numbers").on("click", function(e) {
    $("li").each(function(index) {
        $(this).css("background-color", "blue")
                     .delay(index * 300)
                     .fadeOut(2000);
    });
    e.preventDefault();
});
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/jquery-each/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/jquery-each/) for AI/LLM consumption.