Javascript prop(选中,true)未将其他单选按钮设置为false

Javascript prop(选中,true)未将其他单选按钮设置为false,javascript,jquery,Javascript,Jquery,我有一个单选按钮列表,根据用户从不同列表中的选择以编程方式进行更新。此代码正确地查找与所选项目匹配的单选按钮并将其选中,但不会取消选择以前选择的单选按钮 $('#major_groups input[type=radio]').each(function(){ if($(this).attr("value") == group_name){ $(this).prop("checked",true).checkboxradio('refresh');

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

$('#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)
是否会触发更改事件

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

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

您的每个循环将仅在具有特定值的收音机上调用refresh,而不会在同一组中的其他收音机上调用refresh。该组的实际输入将自动取消选中,但您的插件将无法识别取消选中的输入,除非您也刷新它们

试试这个:

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');

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

谢谢,这解决了事件未触发的问题;但是,仍然没有选择正确的单选按钮。如果我在触发click事件后循环遍历所有按钮并刷新它们,我将获得所需的功能。为什么不使用else语句,取消选中任何其他选中的单选按钮->,并且要触发更改事件,您所要做的就是将
.trigger('change')
链接到选定的单选按钮。