liujiale

问题描述:使用jQuery来控制checkbox的选中状态,但是第一次点击出现选中样式,之后点击可以看到checked的属性增加成功但是并没有选
中状态。

问题代码:

function chooseAllOrNot(id){
var choose=$("input[name=\'"+id+"\']").attr(\'checked\');
if(choose==\'checked\'){
$("input[type=checkbox][name=\'"+id+"\']").removeAttr(\'checked\');
choose=$("input[name=\'"+id+"\']").attr(\'checked\');
}else{
$("input[type=checkbox][name=\'"+id+"\']").attr(\'checked\', \'true\');
choose=$("input[name=\'"+id+"\']").attr(\'checked\');
}
}

  


解决方法:

function chooseAllOrNot(id){
var choose=$("input[name=\'"+id+"\']").prop(\'checked\');
if(choose){
$("input[type=checkbox][name=\'"+id+"\']").removeProp(\'checked\');
choose=$("input[name=\'"+id+"\']").prop(\'checked\');
}else{
$("input[type=checkbox][name=\'"+id+"\']").prop(\'checked\', true);
choose=$("input[name=\'"+id+"\']").prop(\'checked\');
}
}

  


  或者使用javascript原生代码来实现

var fir = document.getElementsByName("name");
for(var i=fir;i<fir.length;i++){
fir[i].checked = true;
}

  


总结:使用attr()给属性checked赋值,发现无论赋予什么值,只要给这个属性赋值了就是选中状态,使用.attr(\'checked\', \'true\');
和.attr(\'checked\', \'false\'),结果都是选中状态,可以使用attr()和removeAttr(),或者使用.attr(\'checked\', true);和.attr
(\'checked\', false),但是使用attr()出现了只有第一次会出现选中和取消选中的状态,后面点击没有选中状态但是代码显示对checked属性控制成
功的,只能改为使用prop()或者使用javascript原生代码来控制,才不会出现上述情况。

附:

什么时候使用attr(),什么时候使用prop()?
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();

 

分类:

技术点:

相关文章: