1

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

$('#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)触发更改事件吗?

4

2 回答 2

2

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

$('#major_groups input[type=radio]').each(function(){
    if($(this).attr("value") == group_name){
        $(this).click();
    }
});
于 2013-01-06T18:07:41.860 回答
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');

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

于 2013-01-06T18:30:34.723 回答