• Jquery attr("checked") 返回checked或undefined 获取选中失效


    第一:

    假设我们现在需要这样的场景:页面上有一个checkbox,我们期望通过Jquery来获得它是否选中,或者通过Jquery来让它被选中。
    在JQ1.6之前的版本,我们会这样写我们的代码:

    return isChecked = $('#cb').attr('checked');

    返回的是 true或者false

    //设置选中
    $('#cb').attr('checked',true);

    //取消选中

    $("#cb").removeAttr('checked');

    可是当我们升级JQ1.6到更高的版本时,问题就来了,此时我们会发现:
    $('#cb').attr('checked'); 返回的是checked或者是undefined,不是原来的true和false了。
    并且checked属性在页面初始化的时候已经初始化好了,不会随着状态的改变而改变。所以如果checkbox一开始是选中的,那么返回的是checked,如果一开始没被选中,则返回的是undefined。

    解决的方法是: 使用pop
    复制代码 代码如下:
    <input type='checkbox' id='cb'/>
    <script>
    //获取是否选中
    var isChecked = $('#cb').prop('checked');
    //或
    var isChecked = $('#cb').is(":checked");

    返回true或者false
    //设置选中
    $('#cb').prop('checked',true);

    //设置取消

    $('#cb').prop('checked',false);
    </script>

    分析了其中的原因,可以这样理解:

    它将“属性”与“特性”做了区别,属性指的是“name,id”等等,特性指的是“selectedIndex, tagName, nodeName”等等。
    JQ1.6之后,可以通过attr方法去获得属性,通过prop方法去获得特性
    复制代码 代码如下:
    $("#cb").attr("tagName"); //undefined
    $("#cb").prop("tagName"); //INPUT

  • 相关阅读:
    [算法][递归] 整数划分 种类数
    [C++] 行程编码C++代码
    Integer IntegerCache源码
    mysql中函数greatest 与MAX区别
    mysql least函数
    easyui icon的使用相关
    jQueryEasyUI Messager基本使用
    EasyUI 修改 Messager 消息框大小
    静态代理和动态代理的区别
    table合并单元格colspan和rowspan
  • 原文地址:https://www.cnblogs.com/legend-song/p/3651261.html
Copyright © 2020-2023  润新知