Jquery: Liaison de modification sur plusieurs cases à cocher

Pour un peu de l'arrière-plan, j'ai plusieurs cases, pondérées chacune par un autre "score". Lorsque la case n'est changé, j'ai besoin de calculer le score. J'ai pensé quelque chose comme cela pourrait fonctionner, mais il ne ressemble pas à de la .événement de changement est lié correctement.

$(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
            }
        });
    });
}  

Je sais que c'est une boucle dans le tableau correctement, mais une alerte .le changement n'est jamais vu.

Il devrait être :checked au lieu de :clicked, voir ma réponse pour plus d'info.
Il semble que toutes les réponses sont à côté du fait que chaque id est unique "score". C'est pourquoi j'ai la cartographie de l'id -> score. J'ai fait le cliqué -> vérifié la correction ci-dessus et changé les commentaires pour montrer ce que je suis en train d'accomplir. J'admets que je pourrait faire de mal. 😉
J'ai ajouté une réponse qui maintient la structure de base que vous travailliez. Je pense que vous essayiez de référence key à l'intérieur du gestionnaire de la pensée, il aurait l'ID. Le problème est que vous avez donné à votre gestionnaire de son propre key paramètre, qui est en réalité référence à la event objet. Supprimer (ou renommer), et vous auriez le key. Mais vous n'en avez pas besoin, parce que vous avez une référence directe à l'ID que vous avez besoin, parce que this références celui qui a reçu l'événement, de sorte this.id est l'ID de celui-là.

OriginalL'auteur Magic Hat | 2010-10-13