Maison >interface Web >js tutoriel >Résoudre le problème selon lequel l'attr (coché) de la case à cocher est toujours undefined_jquery

Résoudre le problème selon lequel l'attr (coché) de la case à cocher est toujours undefined_jquery

WBOY
WBOYoriginal
2016-05-16 16:44:171234parcourir

Récemment, en réponse aux besoins de développement de projets, j'ai besoin de créer une fonction de case à cocher de sélection totale.

Oups~~ N'est-ce pas une chose très simple ? Il y a une case à cocher générale et N sous-cases à cocher Une fois la case à cocher générale cochée, toutes les sous-cases à cocher sont cochées. sélectionnée, les sous-cases ne sont pas sélectionnées.

Après avoir reçu cette petite demande, j'étais secrètement heureux. Quelle fonction simple, OK, cela sera fait en deux minutes~~~

Le temps passait de minute en seconde, et mon cœur faisait des courses. Le nombre de chevaux dans les prairies a progressivement augmenté jusqu'à atteindre des dizaines de millions ~~~

Qu'est-ce qui se passe ?
alert($("#checkbox_all").attr("checked"));
Toujours indéfini ?


Nani ? ? ?

Pourquoi cela se produit-il ? ? Navigateur, tu es stupide ? Changez ensuite de manière décisive les navigateurs pour les tests, de Chrome à IE et d'IE à Firefox. Le résultat est comme ceci -_-||

Est-ce parce que jquery a encore été amélioré ? ? ? ?

Après que Ben Diaosi ait utilisé le télescope Hubble et un microscope électronique laser haute définition pour vérifier, nous avons finalement trouvé l'indice. . . .

Il s'avère que cela a été modifié dans la version 1.6 de jquery :

[L'attribut vérifié a été initialisé lors de l'initialisation de la page et ne changera pas avec le statut Et changer.

C'est-à-dire que si la case est cochée après le chargement de la page, la valeur renvoyée sera toujours cochée (la mienne n'était pas sélectionnée au début)

Si elle n'est pas sélectionnée au le début, il sera restitué est toujours indéfini ! 】


Puisque jquery a apporté des modifications à cela, il doit y avoir une solution correspondante et meilleure :

.prop() est un outil puissant pour résoudre ce problème !

L'utilisation spécifique est la suivante :

alert($("#checkbox_all").prop("checked"));
deviendra vrai à cette fois Ou faux~~


Ainsi, le code de ce diaosi a été modifié comme suit :

#check_all est la case à cocher totale pour toutes les sélections, #check_children est le sous- case à cocher

Copier le code Le code est le suivant :

$("#check_all"). change(function(){
$('.check_children').prop("checked",this.checked);
});

ou :
Copier le code Le code est le suivant :
$("#check_all").change(function(){
var is_checked = $(this) .prop("checked");
$('.check_children').prop("checked",
});

Cependant, j'aime toujours l'utiliser. La première méthode, moins il y a de code, mieux c'est~~écrivez moins, faites plus

C'est très pratique pour résoudre le problème de tout sélectionner~~~ !
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn