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

时间: 2024-10-22 17:26:40

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

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

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

jQuery版本升级踩坑大全

背景 -------------------------------------------------------------------------------- jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本.其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到jQuery 1.9.x或以上版本.前段时间我就主导了这件事情,把公司里我们组负责的项目jQuery版本从1.4.2升级到了jQuery 1.11.3.jQuery官

ie7和ie8 select使用jquery clone不兼容处理

本文解决方案基于http://blog.csdn.net/zzx3q/article/details/8017794 在ie7和ie8下,用jquery clone复制一个select,复制的select是本体的select初始化时的一个副本,无法复制目前本体select选择. 解决方案: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert ti

jQuery学习笔记(四):attr()与prop()的区别

这一节针对attr()与prop()之间的区别进行学习. 先看看官方文档是如何解释两者之间功能差异的: attr() Get the value of an attribute for the first element in the set of matched elements or set one or more attributes for every matched element.获取匹配的元素集合中第一个元素的attribute,或者为每个选定的元素添加一个至多个attribute

纯css兼容个浏览器input[type=&#39;radio&#39;]不能自定义样式

各个浏览器对于表单input[type='radio'].input[type='checkbox']的样式总是各有差异 //html <div class="remember-account"> <input type="checkbox"> <span>记住账号</span> </div> //css .remember-account { display: inline-block; font-siz

jQuery操作编辑页面,span与input标签之间的随时转换

当鼠标点击span时,span会根据需要变成input或select标签,光标移开时,又变回span标签来展示编辑后的内容. HTML代码如下(span里的值是动态添加的,与此无关): 1 <li> 2 <label for="companyType">企业性质</label> 3 <span class="companyType spanToSelect" id="companyType"><

JQuery实现列表中复选框全选反选功能封装

JQuery实现列表中复选框全选反选功能封装 我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如: 我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的id,class,现在想想我都不好意思叫他封装了),然后想到之前老大有写过这个功能去看下他怎么写的,真是没有对比就没有伤害啊,这才叫封装: 1 $(':checkbox[data-check-target]').click(function () { 2

jQuery 复制节点的元素实现添加到购物车功能

描述: 用户点击左边div中的商品,对应商品会自动添加到右面的div中,类似电子商城中的添加到购物车功能. 主要用到了jquery中的复制节点功能,基本原理是首先获取点击的元素,然后将相应信息进行克隆,然后添加到右面的div中. 效果如果: show you code: <!doctype html> <html> <head> <meta charset="utf-8"> <title>jquery test</tit

1.12版jquery.validate IE8 兼容解决方案

搜索 formnovalidate 然后改成这种,也就是if中间注释 // allow suppressing validation by adding the html5 formnovalidate attribute to the submit button if ($(event.target).attr("formnovalidate") !== undefined) { //validator.cancelSubmit = true; } 搜索elements 大概500行