jQuery技术

jQuery 3.0 升级指南

字号+ 作者:H5之家 来源:H5之家 2016-11-08 16:00 我要评论( )

jQuery 3.0 升级指南,概述在3.0主版本中,jQueryCore团队对API进行更改及清理,并修复某些代码更改引起的bug。这包括删除以前弃用的公开API,更改或删除未记录的


jQuery 3.0 升级指南


概述

在3.0主版本中,jQuery Core团队对API进行更改及清理,并修复某些代码更改引起的bug。这包括删除以前弃用的公开API,更改或删除未记录的API,并更改现有API的记录或未记录的行为用于特定输入。

浏览器支持

jQuery 3.0 支持以下浏览器:

Internet Explorer: 9+ Chrome, Edge, Firefox, Safari: 当前版本 和 当前版本 1 Opera: 当前版本 Safari Mobile iOS: 7+ Android 4.0+

jQuery团队策略是主版本更新只针对这些浏览器,所以这个浏览器列表至少支持到jQuery 4。

jQuery Migrate 插件

与jQuery 1.9 / 2.0中的主要更改一样,我们已经创建了一个新版本的 jQuery Migrate插件 ,以简化旧代码迁移到3.0版本。我们强烈建议您使用这个插件作为升级工具,它将给出 可能影响您的代码的关于大多数主要更改的具体建议。

jQuery Migrate插件 3.0 版本,不会警告或恢复以前主版本更改(如jQuery 1.9 / 2.0)中删除的行为。使用以下步骤从 1.11.0 或 2.1.0 之前的jQuery版本升级到3.0新版本:

将页面上的jQuery版本升级到最新的1.x或2.x版本(目前为1.12.3或2.2.3)(愚人码头注:3.0之前的最新版本)。 将未压缩的 jQuery Migrate 1.x插件 添加到页面。 可选但是建议,更新正在使用的任何插件,因为最新版本通常是与最新版本的jQuery是兼容的。 测试页面并解决出现在控制台上的任何警告,使用 JQMIGRATE 1.x警告文档 作为指南。 删除jQuery Migrate 1.x插件,并确保该页面在只使用最新的jQuery 1.x / 2.x的情况下,更新的jQuery代码能继续正常工作。 将页面上的jQuery版本升级到最新的3.0版本(目前为3.0.0 )(愚人码头注:目前最新版本为3.1.1),并将未压缩的 jQuery Migrate 3.x插件 添加到页面。 测试页面并解决控制台上显示的任何警告,使用 JQMIGRATE 3.x警告文档 作为指南。如果插件报错,向第三方插件作者报告插件中的错误。 删除jQuery Migrate 3.x插件,并确保该页面在只使用最新的jQuery 3.x的情况下,能继续正常工作。 不支持在同一页面上同时运行Migrate 1.x和Migrate 3.x。

当使用特定的过时和/或移除的特征时,Migrate插件的未压缩开发版本会在控制台日志中输出以警告。在查找和修复现有jQuery代码和插件中的问题的时候,它很有用,可以作为迁移调试工具。

Migrate插件的压缩版本不会生成任何警告,然而它发出一个单独的控制台消息,告诉我们它已经被安装引用,以简化调试。jQuery 3.0或更高版本的生产站点上可以根据自己的需要使用Migrate插件,但对于旧的不兼容的jQuery代码或插件也必须使用。理想情况下,这只是作为一个短期解决方案,因为恢复旧的行为可能会导致与预期新行为的新jQuery代码的冲突。

重要变更摘要

jQuery作为一个广泛使用的类库,团队通常很难知道在发布之前哪些更改可能会影响到开发人员。尽管这份名单很长,我们认为大多数是边缘案例。许多jQuery项目应该能够运行3.0版本,如果有问题的话,一般只要做轻微的更改。

通过其组件类别列出更改,并以前缀描述,以帮助您了解其影响:

更改 :此更改可能会影响现有代码,因为它以某种方式改变了API。大多数时候,影响仅针对特定边缘情况。 功能 :此更改是添加API,并且在大多数情况下不应影响现有代码。但是,新功能可能与现有代码相互影响。 已弃用 :此功能或API仍然存在于jQuery 3.0中,但不建议使用。它可能会在未来的主版本更新中删除。

请记住,上述的jQuery Migrate插件可以检测和警告这些更改,以便它们可以在现有的代码中修复。

有关所有代码更改的完整详细列表,请参阅 jQuery Core问题跟踪器 中的3.0规划 或 版本差异 。

Ajax 更改:特殊情况的Deferred方法从jQuery.ajax中删除

从 jQuery.ajax() 返回的 jqXHR 对象是一个jQuery Deferred ,并且历史上有三个名称与参数对象的 success , error , 和 complete 相匹配的额外的方法。这经常让人困惑,返回的对象应该像 Deferred 一样处理。从jQuery 3.0开始,这些方法已被删除。作为替代,使用 Deferred 标准的 done , fail 和 always 方法,或者使用新的符合Promises/A+规范的 then 和 catch 方法 。

注意,这对通过 options 对象传递的同名的ajax回调根本没有任何影响,它们继续存在并且不会被弃用。这只影响jqXHR方法。

https://github.com/jquery/jquery/issues/2084

更改:跨域脚本请求必须声明

通过 jQuery.ajax() 或 jQuery.get() 请求跨域脚本的时候,您现在必须在选项中显式指定 dataType: "script" 。这是为了防止远程站点提供非脚本内容攻击的可能性,但稍后决定提供具有恶意意图的脚本。由于 jQuery.getScript() 显式设置 dataType: "script" ,所以它不受此更改的影响。

更改:URL中的 hash 保存在jQuery.ajax()调用中

jQuery.ajax() 方法不再自动删除URL中提供的 hash 值,并将完整的URL发送传输(xhr,script,jsonp或自定义传输)。如果服务器端无法处理URL上的hash,请在发送请求之前删除它。

https://github.com/jquery/jquery/issues/1732

功能:jQuery.get()和jQuery.post()增加新的签名 jQuery 3 通过添加 settings 参数,为 jQuery.get() 和 jQuery.post() 函数添加了一个新的签名。 它是一个对象,可以拥有许多属性,它和你提供给 jQuery.ajax( [settings ] ) 的 settings 对象基本相同(愚人码头注: type 选项将自动设置为 GET ;另:实际上这个签名的添加版本为1.12/2.2)。

https://github.com/jquery/jquery/issues/1986

属性(Attribute) 更改: .removeAttr() 不再设置 property(特性值) 为 false

在jQuery 3.0之前,在布尔属性(例如 checked , selected , 或者 readonly )上使用 .removeAttr() 方法,将会设置其名称相应的 property(特性)为 false 。此行为在Internet Explorer的旧版本上是必需的,但对于现代浏览器是不正确

因为属性(attribute)表示初始值,并且 property(特性)表示当前(动态)值。

在DOM元素上使用 .removeAttr( "checked" ) 几乎总是错误。唯一可能有用的情况是,DOM以后要被序列化回HTML字符串。在所有其他情况下,使用 .prop( "checked", false ) 代替。

https://github.com/jquery/jquery/issues/1759

https://github.com/jquery/jquery/issues/2913

更改:多选下拉框(select-multiple)不选择选项将返回空数组

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 四个步骤,学习jQuery

    四个步骤,学习jQuery

    2016-09-12 16:02

  • JavaScript的jQuery库中ready方法的学习教程

    JavaScript的jQuery库中ready方法的学习教程

    2016-06-17 10:00

  • Jquery 基础学习笔记

    Jquery 基础学习笔记

    2016-05-26 13:01

  • 全面详细的jQuery常见开发技巧手册

    全面详细的jQuery常见开发技巧手册

    2016-02-26 10:02

网友点评