В версиях jQuery до 1.6 используют:
$('input[name="correctAnswer"]').attr('checked', false);
В версиях jQuery после 1.6 вы должны использовать:
$('input[name="correctAnswer"]').prop('checked', false);
но если вы используете 1.6.1+, вы можете использовать первую форму (см. примечание 2 ниже).
Примечание 1: важно, чтобы второй аргумент был false, а не «false», поскольку «false» не является ложным значением. т.е.
if ("false") {
alert("Truthy value. You will see an alert");
}
Примечание 2: По состоянию на JQuery 1.6.0, в настоящее время существует два подобных методов, .attr
и .prop
что делают две связанные , но немного разные вещи. Если в данном конкретном случае приведенный выше совет работает, если вы используете 1.6.1+. Выше не будет работать с 1.6.0, если вы используете 1.6.0, вы должны обновить. Если вам нужны подробности, продолжайте читать.
Подробности: При работе с прямыми элементами HTML DOM, есть свойства , прикрепленные к DOM элементу ( checked
, type
, value
, и т.д.) , которые обеспечивают интерфейс с управлением состоянием страницы HTML. Существует также интерфейс .getAttribute
/, .setAttribute
который обеспечивает доступ к значениям атрибута HTML, как это предусмотрено в HTML. До 1.6 jQuery размыл различие, предоставив один метод .attr
для доступа к обоим типам значений. JQuery 1.6+ предоставляет два метода, .attr
и .prop
чтобы различать эти ситуации.
.prop
позволяет установить свойство для элемента DOM, а также .attr
позволяет установить значение атрибута HTML. Если вы работаете с обычным DOM и устанавливаете свойство selected elem.checked
, на true
или false
вы изменяете текущее значение (то, что видит пользователь), и возвращаемое значение отслеживает состояние страницы. elem.getAttribute('checked')
однако возвращает только начальное состояние (и возвращает 'checked'
или undefined
зависит от исходного состояния из HTML). В 1.6.1+ использование .attr('checked', false)
делает и то, elem.removeAttribute('checked')
и другое, elem.checked = false
так как изменение вызвало множество проблем обратной совместимости, и он не может точно сказать, хотите ли вы установить атрибут HTML или свойство DOM. Более подробную информацию смотрите в документации по .prop .
#(selector).prop('checked',true);
произойдет сбой, когда последует попытка установить для следующего переключателя в той же группе статус непроверенного. Хитрость заключается в том, чтобы установить переключатель только в отмеченное состояние и позволить группе переключателей делать то, что делает (снимите флажок с других ...) . Кроме того, вызов$(selector).click();
работает, и будет запускать любые связанные события.