【问题标题】:Checkbox select/deselect trigger works first time but fails on subsequent attempts复选框选择/取消选择触发器第一次工作,但在随后的尝试中失败
【发布时间】:2016-08-10 01:44:56
【问题描述】:

我有一大块 jQuery,它基于 html data-* 标签工作,可以通过组中的复选框来搜索表单。

单击“全部”复选框,其余所有复选框都应处于未选中状态(每次都可以正常工作)。

现在,如果选择了“全部”并且您单击了不同的选项,那么“全部”应该会被取消选择,这也可以按预期工作。

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

如果您到目前为止尚未更改任何其他内容,则这是第一次有效,但是如果选择了任何其他复选框栏“全部”,或者如果您已经点击了“全部”按钮,如果您选择然后失败再次取消选择它。

任何关于它要做什么的想法都将不胜感激(我尝试使用控制台来发现它没有做什么,但到目前为止它没有提供任何线索)。

示例如下。

html...
<input data-sel-group='group1' id='group1_all'/>
<input data-sel-group='group1' id='group1_1'/>
<input data-sel-group='group1' id='group1_2'/>
/html...

jQuery...
$('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);
        }
    }
})

【问题讨论】:

    标签: javascript jquery checkbox html5-data


    【解决方案1】:

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

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

    也可以通过.prop() vs .attr()

    【讨论】:

      【解决方案2】:

      您应该在设置复选框属性时使用延迟执行。 Please refer this blog

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        • 2020-07-14
        • 1970-01-01
        相关资源
        最近更新 更多