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功能都是兼容的,升级后风险相对来说非常小。假设不明确版本号发生的改变。就冒然升级。风险非常大。

  • 相关阅读:
    redis参数AOF参数的bug
    tidb损坏tikv节点怎么恢复集群
    mysql主从延时临时解决办法
    python脚本批量杀死redis链接
    pt-online-schema-change 脚本化
    mysql查看锁等信息SQL
    mongo复制集脑裂问题如何处理
    日志收集及网络包收集方案
    各浏览器下载文件名不乱码的解决办法
    java 中 byte[]、File、InputStream 互相转换
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7367983.html
Copyright © 2011-2022 走看看