jQuery 1.9.1中的单选按钮是否有错误?

Sim*_*mon 11 javascript debugging jquery jquery-selectors

我一直试图用jQuery以编程方式选择单选按钮,我认为这就像更改checked属性一样简单.

但是,以下代码似乎没有在Chrome/Firefox中的jQuery 1.9.1中执行预期的操作.

预期的行为:单击包含单选按钮的div - >'checked'属性设置 - >在DOM中检查渲染.

实际行为:单击包含单选按钮的div - >'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));    
});
Run Code Online (Sandbox Code Playgroud)

这是一个jsFiddle - http://jsfiddle.net/GL9gC/

我已经尝试了与以前版本的jQuery相同的代码,它都按预期工作.

dsg*_*fin 22

在这种情况下,您应该使用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));
});
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你,我想我应该读过这个(jQuery docs)::"然而,要记住关于checked属性的最重要的概念是它与checked属性不对应.该属性实际上对应于defaultChecked属性,应该仅用于设置复选框的初始值.检查的属性值不会随复选框的状态而改变,而checked属性则会改变.因此,确定是否选中复选框的跨浏览器兼容方式是使用该属性" (4认同)