Question

J'ai essayé de comprendre comment ajouter l'attribut « cochée » à une case à cocher en cliquant dessus. La raison pour laquelle je veux faire est donc si je coche une case à cocher; Je peux avoir mon stockage local sauf que le code html ainsi quand la page est actualisée, il remarque la case est cochée. En ce moment, si je vérifie tout, il efface le parent, mais si je sauve et recharger reste fanée mais la case est cochée.

Je l'ai essayé de faire $ (this) .attr ( 'checked'); mais il ne semble pas vouloir le point d'ajouter vérifié.

EDIT: Après avoir lu les commentaires, il semble que je n'étais pas clair. Mon étiquette d'entrée par défaut est:

<input type="checkbox" class="done">

J'ai besoin ce soit top quand je clique sur la case à cocher, il ajoute: « vérifié » à la fin de cela. Ex:

<input type="checkbox" class="done" checked>

J'ai besoin pour le faire quand je sauverai le code html pour le stockage local, quand il charge, il rend la case à cocher comme cochée.

$(".done").live("click", function(){
if($(this).parent().find('.editor').is(':visible') ) {
var editvar = $(this).parent().find('input[name="tester"]').val();
$(this).parent().find('.editor').fadeOut('slow');
$(this).parent().find('.content').text(editvar);
$(this).parent().find('.content').fadeIn('slow');
}
if ($(this).is(':checked')) {
$(this).parent().fadeTo('slow', 0.5);
$(this).attr('checked'); //This line
}else{

$(this).parent().fadeTo('slow', 1);
$(this).removeAttr('checked');
}
});
Était-ce utile?

La solution

Il semble que ce soit l'une des rares occasions où l'utilisation d'un attribut est réellement approprié. La méthode de attr() jQuery ne vous aidera pas parce que dans la plupart des cas (y compris cela), il établit en fait une propriété, pas un attribut, faisant le choix de son nom un peu stupide regarder. [Mise à jour: Depuis jQuery 1.6.1, la situation a légèrement changé ]

IE a quelques problèmes avec la méthode setAttribute DOM mais dans ce cas il devrait être bien:

this.setAttribute("checked", "checked");

Dans IE, ce sera toujours réellement faire la case cochée. Dans d'autres navigateurs, si l'utilisateur a déjà coché et décoché la case à cocher, définissant l'attribut n'a pas d'effet visible. Par conséquent, si vous voulez garantir la case est cochée, ainsi que d'avoir l'attribut checked, vous devez définir la propriété checked ainsi:

this.setAttribute("checked", "checked");
this.checked = true;

Pour décocher la case à cocher et supprimer l'attribut, procédez comme suit:

this.setAttribute("checked", ""); // For IE
this.removeAttribute("checked"); // For other browsers
this.checked = false;

Autres conseils

$( this ).attr( 'checked', 'checked' )

juste attr( 'checked' ) renvoie la valeur d'attribut checked de $ (this). Pour le régler, il faut que le deuxième argument. Sur la base de <input type="checkbox" checked="checked" />

Edit:

D'après les commentaires, une manipulation plus appropriée serait:

$( this ).attr( 'checked', true )

Et une méthode javascript droit, plus approprié et efficace:

this.checked = true;

Merci @ Andy E pour cela.

Si .attr() ne fonctionne pas pour vous (en particulier lors de la vérification et des boîtes décochant successivement), utilisez .prop() au lieu de .attr().

utilisez ce code

var sid = $(this);
sid.attr('checked','checked');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top