我有一大块 jQuery,它基于 html data-* 标签来处理搜索表单组中的复选框。

单击“全部”复选框,其余所有复选框都应取消选中(这每次都有效,没有问题)。

现在,如果选择“全部”并单击其他选项,则“全部”应取消选择,这也可以按预期工作。

但是,如果您愿意,可以取消选择“全部”复选框,该复选框将默认选中其余复选框,以便您可以取消选择所需的结果。

如果您到目前为止还没有更改任何其他内容,则这是第一次,但如果选择了任何其他复选框栏“全部”,或者如果您已经单击了“全部”按钮,那么一旦选择失败,再次取消选择。

<input data-sel-group='group1' id='group1_all'/> 
<input data-sel-group='group1' id='group1_1'/> 
<input data-sel-group='group1' id='group1_2'/> 
$('input:checkbox').on('click',function(){ 
var sel = $(this).data('sel-group'), 
    all = $('#'+sel+'_all'), 
    chk = all.is(':checked'); 
    if($(this).attr('id')==all.attr('id')){ 
        if(chk){ 
            $('input[data-sel-group="'+sel+'"][id!="'+sel+'_all"]').attr('checked', false); 
        }else{ 
            $('input[id!="'+sel+'_all"][data-sel-group="'+sel+'"]').attr('checked', true); 
        } 
    }else{ 
        all.attr('checked', false); 
        if($('input[data-sel-group="'+sel+'"]:checked').length<=0){ 
            all.attr('checked', true); 
        } 
    } 
}) 

请您参考如下方法:

使用.prop()而不是.attr()

$(selector).prop('checked', true/false); 

另请浏览.prop() vs .attr()


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!