jquery复选框取消选中问题

时间:2014-02-24 12:13:18

标签: javascript jquery checkbox

我有一个脚本从db加载一组numbners并选择那些对应的复选框。数组中的数字介于1到43之间,我有43个复选框,从id =“1”到id =“43”。 该脚本是从select中触发的。

function getroleitems(ruolo){
    fun = new Array();

    $.ajax({
    type: "POST",
    data: {id: ruolo},
    url: "getroleitems.php",
    success: function(data){
        fun = data;
        if (fun.length){ 
        $('#' + fun.join(', #')).attr('checked', true);
        }
    },dataType:"json"
    });

};
$(document).ready(function(){
    $('#ruolo').change(function(){
    $('input:checkbox').attr('checked',false);
    var ruolo=$('#ruolo').val();
    getroleitems(ruolo);
    });
});

问题在于,如果我添加这一行:

$('input:checkbox').attr('checked',false);

脚本不再标记复选框。我试图在更改功能和ajax内部添加此行同样的运气。 我需要在加载新数组之前重置每个复选框的状态以取消设置。 有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

$('input:checkbox').removeAttr('checked');

或:

$('input:checkbox').prop('checked',false);

答案 1 :(得分:0)

对于具有基础布尔属性(已检查为1)的属性,removeAttr会自动将基础属性设置为false。 (请注意,这是jQuery 1.6.1中添加的向后兼容性“修复”)。您可以使用:

$('input:checkbox').removeAttr('checked');

答案 2 :(得分:0)

解决。 关键是使用.attr()可以在DOM树中设置属性的值。根据浏览器,浏览器版本和jQuery版本(特别是1.7),这并不总是具有预期的效果。

使用.prop(),您可以操作属性(在本例中为“已检查状态”)。

所以我改变了

$('#' + fun.join(', #')).attr('checked', true);

使用.prop而不是.attr

$('#' + fun.join(', #')).prop('checked', true);

代码开始正确显示所有内容。 请注意,没有这一行

$('input:checkbox').attr('checked',false);

.attr()和.prop()给出相同的结果。