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();

  • 相关阅读:
    BZOJ1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
    BZOJ1031: [JSOI2007]字符加密Cipher
    关于后缀数组的实现
    BZOJ1692: [Usaco2007 Dec]队列变换
    BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排
    POJ 2386 Lake Counting(搜索联通块)
    POJ 2386 Lake Counting(搜索联通块)
    Java演示设计模式中的写代码的代码
    Java演示设计模式中的写代码的代码
    源码映射
  • 原文地址:https://www.cnblogs.com/liujiale/p/7299504.html
Copyright © 2011-2022 走看看