jquery版本升级不兼容的问题:$("input").attr("value")功能发生改变

本文探讨了不同版本的jQuery中使用.attr('value')和.val()获取输入框值的区别。在1.6.3版本中两者等效,但在2.1.1及后续版本中,.attr('value')只能获取初始值而非实际输入值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前项目中使用的是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功能都是兼容的,升级后风险相对来说很小。如果不明白版本发生的改变,就冒然升级,风险很大。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值