Si vous utilisez une version relativement nouvelle de JQuery, j'utiliserais le .on ('change', function () {...}) comme mentionné dans la réponse de @Daniel De Leon ci-dessous. Un avantage, l'écouteur d'événement «on» se liera au html généré dynamiquement.
Modifier: cela ne capturera pas lorsque la case à cocher change pour d'autres raisons qu'un clic, comme l'utilisation du clavier. Pour éviter ce problème, écoutez changeplutôt que click.
Votre code n'a pas de paran et devrait vraiment utiliser la méthode jQuery pour obtenir l'état de vérification.
Pete Michaud
2
Shore: la raison pour laquelle getElementById fonctionne est qu'il renvoie un élément DOM, alors que la fonction $ jQuery renvoie un objet jQuery. L'objet jQuery a l'élément DOM comme propriété, mais ce n'est pas lui-même un objet DOM.
Pete Michaud
3
Je sais que j'arrive en retard à la fête, mais cela ne fonctionne que lorsqu'un événement "clic" le déclenche. Si, pour une raison quelconque, vous deviez faire quelque chose comme ça ailleurs dans le code: $ ("# something"). Attr ("checked", "checked"), l'événement de clic ne serait jamais déclenché.
David Stinemetze le
3
@DavidStinemetze: Je dirais que vous pouvez écouter tonne changeau lieu de cliquer. Je mets à jour la réponse
marcgg
44
Le clic affectera une étiquette si nous en avons une attachée à la case d'entrée?
Je pense qu'il vaut mieux utiliser la fonction .change ()
J'ai besoin de savoir si un clic signifie le cocher ou le décocher.
omg le
1
vous pouvez ensuite utiliser $ (this) .is (': checked') pour tester l'état de l'élément sur lequel vous venez de cliquer
Ty W
-1
$(document).ready(function(){
checkUncheckAll("#select_all","[name='check_boxes[]']");});var NUM_BOXES =10;// last checkbox the user clickedvarlast=-1;function check(event){// in IE, the event object is a property of the window object// in Mozilla, event object is passed to event handlers as a parameterevent=event|| window.event;var num = parseInt(/box\[(\d+)\]/.exec(this.name)[1]);if(event.shiftKey &&last!=-1){var di = num >last?1:-1;for(var i =last; i != num; i += di)
document.forms.boxes['box['+ i +']'].checked=true;}last= num;}function init(){for(var i =0; i < NUM_BOXES; i++)
document.forms.boxes['box['+ i +']'].onclick = check;}
Cela ressemble à une sélection de plage (c'est-à-dire, cochez le premier élément, maintenez la touche Maj enfoncée, cochez le dernier; et tous ceux entre les deux sont cochés.) Cependant, c'est bien plus que ce que demande la question. Il manque cependant du code, comme checkUncheckAll ().
Réponses:
Modifier: cela ne capturera pas lorsque la case à cocher change pour d'autres raisons qu'un clic, comme l'utilisation du clavier. Pour éviter ce problème, écoutez
change
plutôt queclick
.Pour vérifier / décocher par programme, jetez un œil à Pourquoi mon événement de modification de case à cocher n'est-il pas déclenché?
la source
change
au lieu de cliquer. Je mets à jour la réponseLe clic affectera une étiquette si nous en avons une attachée à la case d'entrée?
Je pense qu'il vaut mieux utiliser la fonction .change ()
la source
Utilisez le sélecteur : vérifié pour déterminer l'état de la case à cocher:
la source
Pour JQuery 1.7+, utilisez:
la source
Utilisez l'extrait de code ci-dessous pour y parvenir:
Ou vous pouvez faire la même chose avec une seule case à cocher:
Pour la démo: http://jsfiddle.net/creativegala/hTtxe/
la source
D'après mon expérience, j'ai dû tirer parti de la cible actuelle de l'événement:
la source
Ce code fait ce dont vous avez besoin:
Vous pouvez également le vérifier sur jsfiddle
la source
utiliser l'événement click pour une meilleure compatibilité avec MSIE
la source
HTML:
la source