JQuery .prop(checked,true)没有将其他单选按钮设置为false

时间:2013-01-06 18:04:37

标签: javascript jquery

我有一个单选按钮列表,我根据用户从不同列表中的选择以编程方式更新。此代码正确找到与所选项匹配的单选按钮并选择它,但它不会取消选择以前选择的单选按钮。

$('#major_groups input[type=radio]').each(function(){
        if($(this).attr("value") == group_name){
            $(this).prop("checked",true).checkboxradio('refresh');
        }
});

major_groups div中的所有单选按钮都具有相同的名称,因此我认为选择一个会取消选择其他按钮。我通过再次循环按钮并刷新所有这些来实现它,但这似乎效率低下。

此外,.prop("checked",true)会触发更改事件吗?

2 个答案:

答案 0 :(得分:2)

如何在单选按钮上触发点击事件,如下所示:

$('#major_groups input[type=radio]').each(function(){
    if($(this).attr("value") == group_name){
        $(this).click();
    }
});

答案 1 :(得分:0)

您的每个循环只会在具有特定值的广播中调用刷新,并且不会在同一组中的其他循环上调用。该组的实际输入将自动取消选中,但您的插件将无法识别取消选择的插件,除非您刷新它们。

试试这个:

var $radios=$('#major_groups input[type=radio]');
/* first check the appropriate radio*/
var $radioToUpate=$radios.filter(function(){
        return this.value=group_name;       
}).prop("checked",true);
/* then refresh all radios with same name*/
$radios.filter('[name="'+ $radioToUpate.attr('name') +'"]').checkboxradio('refresh');

插件文档的链接可能有助于查看插件是否具有处理可能会处理整个组的属性更改的方法