Maison > Article > interface Web > La différence entre attr() et prop() dans jQuery lors de la modification de l'attribut_jquery vérifié
Lors de la création du bouton de sélection de la case à cocher, un problème est survenu. Utilisez l'instruction $.attr('checked',true) pour changer l'attribut de la case à cocher en coché. C'est la première fois dans le navigateur Chrome. Cela ne fonctionne pas après que le premier clic soit valide. IE8 n'a aucun problème.
Baidu a mis beaucoup de temps à découvrir que la raison est que les attributs du HTML sont divisés en attributs et propriétés. Appelons ces dernières propriétés pour l'instant.
L'attribut vérifié est divisé en attribut->vérifié et propriété->vrai, faux.
Pour une case à cocher, si vérifié="checked" n'est pas défini, le résultat de alert($.attr("checked")) n'est pas défini. S'il est défini, le résultat est vérifié. L'attribut ne change pas lorsque l'état de la case à cocher change.
Si prop($.attr("checked")) est utilisé, le résultat sera respectivement faux et vrai. La propriété change à mesure qu'elle change.
Donc, prop() doit être utilisé lors de la modification de l'attribut vérifié. prop() a été ajouté après jQuery 1.6.
Tableaux sur d'autres propriétés similaires sur Internet :
De plus, dans les versions antérieures à IE9, si la propriété n'est pas supprimée avant la suppression de l'élément DOM, utiliser la méthode .prop() pour définir la valeur de la propriété de l'élément DOM (sauf les types simples : nombre, chaîne, booléen ) provoquera une fuite de mémoire. Afin de définir en toute sécurité la valeur de l'objet DOM et d'éviter les fuites de mémoire, vous pouvez utiliser la méthode .data(). Je ne l'ai pas encore rencontré, je vais donc l'écrire ici.