• jQuery控制checkbox选中状态但是不显示选中


    问题描述:使用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();

  • 相关阅读:
    Mysql连接错误:Lost connection to Mysql server at 'waiting for initial communication packet'
    linux基本命令(4) 查看文件相关
    linux基本命令(3) 文件操作相关
    php 验证码不显示
    linux基本命令(2) 修改文件所属人以及权限
    linux 修改开机欢迎文字
    Mysql 自定义HASH索引带来的巨大性能提升
    Maven依赖范围<scope>
    深入理解Java G1垃圾收集器
    Redis EXISTS命令耗时过长case排查
  • 原文地址:https://www.cnblogs.com/liujiale/p/7299504.html
Copyright © 2020-2023  润新知