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