Dans les versions de jQuery antérieures à 1.6, utilisez :
$('input[name="correctAnswer"]').attr('checked', false);
Dans les versions de jQuery postérieures à 1.6, vous devez utiliser :
$('input[name="correctAnswer"]').prop('checked', false);
mais si vous utilisez la version 1.6.1+, vous pouvez utiliser la première forme (voir la note 2 ci-dessous).
Note 1 : il est important que le second argument soit faux et non "faux" depuis "faux" n'est pas une valeur falsy, c'est-à-dire que
if ("false") {
alert("Truthy value. You will see an alert");
}
Note 2 : Depuis la version 1.6.0 de jQuery, il existe désormais deux méthodes similaires, .attr
et .prop
qui font deux choses liées mais légèrement différentes. Dans ce cas particulier, les conseils fournis ci-dessus fonctionnent si vous utilisez la version 1.6.1+. Les conseils ci-dessus ne fonctionneront pas avec la version 1.6.0. Si vous utilisez la version 1.6.0, vous devez effectuer une mise à niveau. Si vous voulez les détails, continuez à lire.
Détails : Lorsque l'on travaille avec des éléments DOM HTML simples, il existe des propriétés attachées à l'élément DOM ( checked
, type
, value
etc.) qui fournissent une interface avec l'état de fonctionnement de la page HTML. Il y a aussi le .getAttribute
/ .setAttribute
qui permet d'accéder aux valeurs des attributs HTML tels qu'ils sont fournis dans le HTML. Avant la version 1.6, jQuery a brouillé la distinction en fournissant une méthode, .attr
pour accéder aux deux types de valeurs. jQuery 1.6+ fournit deux méthodes, .attr
et .prop
pour faire la distinction entre ces situations.
.prop
vous permet de définir une propriété sur un élément du DOM, alors que .attr
vous permet de définir la valeur d'un attribut HTML. Si vous travaillez avec un DOM simple et que vous définissez la propriété checked, elem.checked
à true
ou false
vous modifiez la valeur courante (ce que l'utilisateur voit) et la valeur renvoyée suit l'état de la page. elem.getAttribute('checked')
ne renvoie cependant que l'état initial (et renvoie 'checked'
ou undefined
en fonction de l'état initial du HTML). Dans les versions 1.6.1+, l'utilisation de .attr('checked', false)
fait les deux elem.removeAttribute('checked')
et elem.checked = false
car ce changement a causé de nombreux problèmes de rétrocompatibilité et il ne peut pas vraiment dire si vous vouliez définir l'attribut HTML ou la propriété DOM. Voir plus d'informations dans le documentation pour .prop .