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