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

  • 相关阅读:
    16日彻底去除安卓应用的内置广告
    配台600元的主机套装 自己组装 全新
    带记录功能的计算器
    华为8812 进入工程模式 和打电话黑屏问题
    买平板 四核 500~600左右对比
    querySelector()方法
    Javascript实例教程:querySelector()方法接受一个CSS查询并返回匹配模式的第一个子孙元素,如果没有匹配的元素则返回null。
    Android实用代码七段(二)
    Android实用代码七段(三)
    Firebug入门指南
  • 原文地址:https://www.cnblogs.com/liujiale/p/7299504.html
Copyright © 2011-2022 走看看