zoukankan      html  css  js  c++  java
  • 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();

  • 相关阅读:
    新浪微博OAuth2授权错误 error:redirect_uri_mismatch
    [Eclipse]自动注释功能
    android 官网访问不了
    [转]Java开发中的23种设计模式详解
    [转]JAVA Iterator 的用法
    [转] Java集合类详解
    MySQL(root用户)密码重置
    SpringMVC项目接入Springfox实战遇到的问题集合
    linux中mysql完整卸载命令操作
    linux-centos挂载新硬盘操作
  • 原文地址:https://www.cnblogs.com/liujiale/p/7299504.html
Copyright © 2011-2022 走看看