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

  • 相关阅读:
    EF数据迁移完整步骤
    ajax跨域最全解决方案
    WPF控件与WPF窗体
    WPF模板是把控件MVC模式化
    对象与类型
    Java加权负载均衡策略
    db2列式存储
    linux离线安装mongodb及java调用
    python合并目录下excel数据
    python多线程迁移db2数仓9T数据
  • 原文地址:https://www.cnblogs.com/legend-song/p/3651261.html
Copyright © 2011-2022 走看看