Есть ошибка с переключателями в jQuery 1.9.1?
Я пытаюсь программно выбирать радиокнопки с jQuery, то, что я думал, будет таким же простым, как изменение атрибута checked.
Однако следующий код, похоже, не делает того, что ожидается в jQuery 1.9.1 в Chrome/Firefox.
Ожидаемое поведение: Щелкните по элементу, содержащему радиокнопку → атрибут 'checked', установленный → рендеринг, отмеченный в DOM.
Фактическое поведение:. Щелкните по элементу, включающему переключатель → 'checked', получает значение → рендер проверяется в DOM для первой и второй нажатых кнопок, последующие кнопки не отображаются как проверяется.
JQuery
$('div.form-type-radio').on('click', function () {
var Id = $(this).find('input[type=radio]').attr('id');
$('form input[type=radio]:not(#'+Id+')').removeAttr('checked');
$('#' + Id).attr('checked', 'checked');
console.log($('#' + Id));
});
Здесь jsFiddle - http://jsfiddle.net/GL9gC/
Я пробовал тот же код с предыдущими версиями jQuery, и все работает как ожидалось.
Ответы
Ответ 1
В этом случае вы должны использовать prop() вместо attr()/ removeAttr().
Здесь работает jsFiddle.
JQuery
$('div.form-type-radio').on('click', function () {
var Id = $(this).find('input[type=radio]').prop('id');
$('form input[type=radio]:not(#'+Id+')').prop('checked');
$('#' + Id).prop('checked', 'checked');
console.log($('#' + Id));
});
Ответ 2
LIVE DEMO
$('div.form-type-radio').on('click', function () {
$(this).find(':radio').prop({checked: true});
});
http://api.jquery.com/prop/