Misteri di javascript jQuery e cicli

Ci sono cose che spesso lasciano il programmatore un pochino sorpreso se non allibito. Stavo provando ad attivare gli elementi di una checklist utilizzando javascritp e jquery.

La checklist era in un normalissimo form html con un codice che non riporto integralmente ma che ricalca il senguente:

<input name="people" type="checkbox" value="aaaaa" />Primo elemento
<input name="people" type="checkbox" value="bbbbb" />Secondo elemento
<input name="people" type="checkbox" value="ccccc" />Terzo elemento

Stavo utilizzando i selettori jquery e, da documentazione, il codice seguente mi rende “selected”, gli elementi 2 e 3:

$('input:checkbox[name="people"][value="bbbbb"]').prop('checked',true);
$('input:checkbox[name="people"][value="ccccc"]').prop('checked',true);

Ora mettiamo che gli elementi accesi si trovino in un Array di oggetti fatto così:

var myselectedvalues = new Array();
myselectedvalues.push({label: "Secondo elemento", id:"bbbbb"});
myselectedvalues.push({label: "Terzo elemento", id:"ccccc"});

Dato questo presupposto, mi sono detto, con un ciclo ed un selettore interno al ciclo risolvo tutto, ed ho scritto:

myselectedvalues.forEach(function(jr) {
$('input:checkbox[name="people"][value="' + jr.id + '"]').prop('checked',true);
});

Ma non ne voleva sapere di funzionare, allora ho scritto un costrutto equivalente:

for(var i = 0; i < myselectedvalues.length; i++) {
$('input:checkbox[name="people"][value="' + myselectedvalues[i].id + '"]').prop('checked',true);
}

E questo codice ha funzionato egragiamente. Ma perché il codice di prima non funziona?
Qualcuno riesce ad illuminarmi?

Nessun commento

Lascia un commento

La tua email non sarà mai resa pubblica.I campi obbligatori sono segnalati con un *