Per un po 'di background, ho più caselle di controllo, ciascuna con un "punteggio" diverso. Quando la casella di controllo è cambiata, ho bisogno di calcolare il punteggio. Ho pensato che qualcosa del genere avrebbe funzionato, ma non sembra che l'evento .change sia associato correttamente.Jquery: modifica vincolante a più checkbox
$(document).ready(function() {
bindSomeCheckboxes();
});
function bindSomeCheckboxes() {
var score=0;
var checkboxes = {
"id_1" : 3,
"id_2" : 1,
"id_3" : 2,
"id_4" : 5
};
$.each(checkboxes, function(key, value) {
$("#"+key).change(function(key,value) {
if ($("#"+key).is(':checked')) {
//add this ids value to score
} else {
//subtract value from score
}
});
});
}
So che sta eseguendo il looping attraverso l'array correttamente, ma un avviso in .change non viene mai visto.
dovrebbe essere ': checked' invece di': clicked', si veda la mia risposta per maggiori informazioni. – BrunoLM
Sembra che a tutte le risposte manchi il fatto che ogni ID abbia un "punteggio" unico. Ecco perché ho la mappatura di id -> punteggio. Ho fatto clic su -> controllato la correzione sopra e modificato i commenti per mostrare quello che sto cercando di realizzare. Devo ammettere che potrei andare in giro tutto sbagliato. ;) –
Ho aggiunto una risposta che mantiene la struttura di base con cui si stava lavorando. Penso che stavi cercando di fare riferimento a 'chiave' all'interno del gestore pensando che avrebbe avuto l'ID. Il problema è che hai dato al tuo gestore il proprio parametro 'key', che in realtà si riferisce all'oggetto' event'. Rimuovi (o rinomina) quello e avresti il 'key'. Ma non ne hai bisogno, perché hai un riferimento diretto all'ID che ti serve perché "this" fa riferimento a quello che ha ricevuto l'evento, quindi "this.id" è l'ID di quello. – user113716