Подтвердить что ты не робот

Есть ошибка с переключателями в 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, и все работает как ожидалось.

4b9b3361

Ответ 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));
});