zoukankan      html  css  js  c++  java
  • jquery版本号升级不兼容的问题:$("input").attr("value")功能发生改变

    之前项目中使用的是jquery-1.6.3.js,在这个版本号中,假设我们想获取输入框的值,能够使用$("input").attr("value")或者是$("input").val(),这2种方式是等价的。

    <input type="text" id="speed" />
    $("#speed").attr("value");
    $("#speed").val();


    近期到了还有一个项目组,使用的是jquery-2.1.1.js,结果发现了问题。我使用的是IE10浏览器。

    <input type="text" id="speed" value="45"/>
    $("#speed").attr("value");//始终是45

    假设text控件给了默认值,那么使用attr("value")得到的结果始终是45,不会得到输入控件实际输入的值。

     

    <input type="text" id="speed" />
    $("#speed").attr("value");//始终是undefined

    假设text控件没有设置value属性,那么使用attr("value")得到的结果始终是undefined。

    经过測试,无论是1.6.3版本号,还是2.1.1版本号,使用val()函数。总是可以成功获取输入框的实际值。

    <input type="text" id="speed" value="45"/>
    $("#speed").val();//可以得到输入框的实际值


     

    我又尝试了1.9.1版本号,发现attr("value")和val()的表现跟2.1.1版本号是一致的。

    不知道jquery是从哪儿个版本号发生改变的。反正以后大家使用jquery时须要注意这个问题。假设没有想到版本号升级带来的不兼容问题。那么可能会找不到问题的所在。由此可见版本号升级是一件非常有风险的事情。一定要经过充分的验证,最好能有自己主动化的验证用例。假设全部的測试用例都能通过,那么基本意味着。版本号的API功能都是兼容的,升级后风险相对来说非常小。假设不明确版本号发生的改变。就冒然升级。风险非常大。

  • 相关阅读:
    Map-HashMap
    Collection(List & Set)
    Redis五种数据类型详解
    Redis基本数据结构详解
    分布式Session管理
    一致性算法
    Zookeeper
    分布式锁
    线程池原理解析
    疑点难点1.1
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7367983.html
Copyright © 2011-2022 走看看