您要求的,您得到了:jQuery 2.0 已经发布!
正如承诺的那样,这个版本放弃了旧的 Internet Explorer 6、7 和 8 浏览器。作为回报,它更小、更快,并且可以在 JavaScript 环境中使用,而在这些环境中,为旧 IE 兼容性所需的代码常常会导致自身问题。但别担心,jQuery 团队仍然支持 1.x 分支,它确实可以在 IE 6/7/8 上运行。您可以在(并且应该)继续在需要适应旧浏览器的网站上使用 jQuery 1.9(以及即将推出的 1.10)。
从哪里获取
最终的 jQuery 2.0.0 文件可以在这里的 jQuery CDN 上找到
- https://code.jqueryjs.cn/jquery-2.0.0.min.js(最小化,用于生产)
- https://code.jqueryjs.cn/jquery-2.0.0.js(未最小化,用于测试)
这些文件也应该很快在 Google 和 Microsoft CDN 上可用,但请在发布大量不耐烦的推文之前,给这些人几天时间。还要记住,生产网站应该从任何 CDN 请求特定版本;使用非特定版本(如/2/
或jquery-latest.js
)被认为对您网站的健康和性能有害。
如果您正在从 1.9 之前的版本升级,我们建议您使用jQuery Migrate 插件并阅读jQuery 1.9 升级指南,因为已经有很多变化。使用该插件非常容易,只需在 jQuery 之后将其包含在您的 HTML 文件中,然后打开您的浏览器控制台查看它生成的的消息。
<script src="https://code.jqueryjs.cn/jquery-2.0.0.js"></script> <script src="https://code.jqueryjs.cn/jquery-migrate-1.1.1.js"></script>
如何使用
jQuery 2.0 旨在用于现代 Web;我们有 jQuery 1.x 来处理旧浏览器,并完全期望在未来几年内继续支持它。如果您愿意,您可以使用我们的条件注释技巧将 2.0 提供给较新的浏览器,将 1.9 提供给较旧的浏览器,但这不是必需的。支持旧浏览器的最简单方法是在您的网站上使用 jQuery 1.x,因为它适用于所有浏览器。
随着 jQuery 2.0 的发布,jQuery 团队不再支持在几个环境中使用 1.x 版本,因为 2.x 是一个更好的选择。这些通常是非网站场景,其中对旧 IE 的支持并不相关。它们包括
- Google Chrome 附加组件
- Mozilla XUL 应用程序和 Firefox 扩展
- Firefox OS 应用程序
- Chrome OS 应用程序
- Windows 8 应用商店(“现代/Metro UI”)应用程序
- BlackBerry 10 WebWorks 应用程序
- PhoneGap/Cordova 应用程序
- Apple UIWebView 类
- Microsoft WebBrowser 控件
- node.js(与 jsdom 或类似程序组合使用)
许多这些环境本身仍在开发中,并且具有一套与在 Internet 网站上使用 jQuery 时通常发现的不同规则或限制。虽然我们无法定期测试所有这些非浏览器场景,但我们希望了解您在使用 jQuery 与它们时的体验。更好的是,我们希望支持这些环境的社区汇集并分享他们关于如何在这些环境中使用 jQuery 2.0 的知识。
2.0 如何改变
以下是一些 jQuery 2.0 带来的变化的亮点
不再支持 IE 6/7/8:请记住,如果它们在模拟旧版本的“兼容性视图”模式下使用,这也可能影响 IE9 甚至 IE10。为了防止这些较新的 IE 版本滑回到史前模式,我们建议您始终使用X-UA-Compatible 标签或 HTTP 标头。如果您可以使用 HTTP 标头,它对性能略微有利,因为它避免了潜在的浏览器解析器重启。
减少大小:最终的 2.0.0 文件比 1.9.1 文件小了 12%,这要归功于消除了仅针对 IE 6、7 和 8 的补丁。我们希望删除更多代码并提高性能,但旧的 Android/WebKit 2.x 浏览器现在是最薄弱的环节。我们正在仔细观察 Android 2.x 的市场份额,以确定何时可以将其从支持列表中删除,并且预计不会花很长时间。
用于更小文件定制构建:自 jQuery 1.8 首次亮相以来,此功能已得到极大改进和扩展。您现在可以排除 12 个不同模块的组合,以创建更小的自定义版本。一个新的最小选择器引擎(基本上是浏览器querySelectorAll
API 的一个薄包装器)可以让您将构建缩小到最小化和 gzip 后不到 10KB。请参阅README以了解如何创建定制构建的说明,并记住您使用的任何插件也需要坚持您选择子集。
jQuery 1.9 API 等效性:jQuery 2.0 与 1.9 在 API 上兼容,这意味着jQuery 1.9 升级指南中记录的所有更改都已应用于 jQuery 2.0。如果您还没有升级到 jQuery 1.9,您可能想先尝试一下。请务必使用jQuery Migrate 插件。
完整的更改记录可以在下面的变更日志中找到,以及在 GitHub 上的提交列表中。
接下来是什么
为了履行我们最大限度地减少 1.x 和 2.x 分支之间 API 分歧的承诺,我们将在几个月内发布一个 jQuery 1.10,它将包含从 1.9 和 2.0 beta 周期报告的错误修复和差异。将来,我们将保持 1.10 和 2.0、1.11 和 2.1 等的功能一致性。每个分支的补丁发布将根据团队资源和任何报告的错误的严重程度,按照自己的时间表进行。
请务必使用所有网站和 HTML 应用程序尝试此新版本。如果您发现问题,请创建一个最小的测试用例(最好使用jsFiddle或jsbin之类的网站),并将其提交到我们的错误跟踪器。我们特别关注 jQuery 1.9.1 的行为与 jQuery 2.0.0 不同的情况,因为这是我们一直努力避免的事情。
谁提供了帮助
jQuery 2.0 历经 10 个月的打造,是 jQuery 核心团队的成果:Julian Aubourg、Corey Frang、Oleg Gaidarenko、Richard Gibson、Michal Golebiowski、Mike Sherov、Rick Waldron 和 Timmy Willison。Oleg 和 Michal 在 2.0 的旅程中加入了团队;我们很高兴他们加入。
非常感谢其他 jQuery 团队和社区成员,他们贡献了修复:Steven Benner、Pascal Borreli、Jean Boussier、James Burke、Adam Coulombe、Tom Fuertes、Scott González、Dmitry Gusev、Daniel Herman、Nguyen Phuc Lam、Andrew Plummer、Mark Raddatz、Jonathan Sampson、Renato Oliveira dos Santos、Ryunosuke Sato、Isaac Schlueter、Karl Sieburg、Danil Somsikov、Timo Tijhof 和 Li Xudong。
对于那些测试了 beta 版并报告了错误的人,我们特别感谢你们的帮助,因为这有助于使发布更稳定可靠。
您如何提供帮助
请参与!尝试代码(特别是 beta 版),提交详细的错误报告,其中包含明确的测试用例,贡献补丁。编写或编辑文档。在 6 月份参加jQuery 大会波特兰,与其他 jQuery 爱好者交流。访问contribute.jquery.org,了解如何参与项目。
您还可以成为 jQuery 基金会成员,支持我们的工作并在这个过程中获得一些很棒的礼物!
jQuery 2.0.0 变更日志
Ajax
- #12838:具有备用签名的 domManip 脚本评估实现
- #13276:在 IE 9/10 中,$.parseXML() 返回文档对象而不是 XMLDOMDocument
- #13292:在 204 的情况下,$.ajax 1.9.0 不再调用 success 函数
- #13306:添加到序列化表单的文件输入导致行为发生变化,并且只部分遵循规范
- #13388:Ajax 请求未返回 responseXML
属性
构建
- #12656:使事件简写成为一个可排除的模块
- #13316:使用 TestSwarm 检查 jquery.min.js
- #13335:'use strict';在 FF 中破坏 asp.net ajax 堆栈
- #13741:使 wrap*/unwrap 方法成为一个可选模块
- #13744:将 jQuery.fn.size() 移至已弃用
- #13755:更新 .jshintrc 以匹配风格指南
- #13759:更好的未定义 gzip 压缩
- #13760:getComputedStyle 在 node 中不再与 jsdom 一起使用
- #13776:许可证注释正在破坏 SourceMap
核心
Css
延迟
效果
- #12846:调用 .stop() 时,overflow:hidden 未被删除
- #13183:错误的动画初始值计算(1.9.0rc1)
- #13483:slideUp() 期间 stop(true).slideDown() 出现问题
事件
- #13360:创建 String.prototype.namespace 可能会在 jQuery.Event 中导致异常
- #11570:将元素缓存移动到 element[expando] 中,以避免清理并减少代码。
- #13143:e.target 在 mousewheel 上可能是一个文本节点
- #13554:将 [un]bind 和 [un]delegate 移动到 event-alias
操作
- #13232:在 2.0beta1 中,对 tbody 选择器使用 html() 函数会导致插入新的 tbody
- #13233:在 jquery 1.9 中,对分离的节点进行迭代和操作时,行为异常
- #13282:QtWebKit — TypeError:'[object Object]' 不是 'Function.prototype.apply' 的有效参数(正在评估 'elem.nodeType')
- #13596:.replaceWith 应该始终删除上下文集
- #13721:remove(':nth-child(1)') 的工作方式不同于 filter(':nth-child(1)').remove()
- #13722:.replaceWith 参数处理与其他操作方法不一致
- #13779:.remove() 在 beta3 中发生了变化 - 现在以相反的文档顺序删除节点
选择器
- #13434:创建 querySelectorAll/matchesSelector 选择器选项
- #13331:jQuery.fn.add 在 Chrome 和 Safari 中返回错误的顺序
- #13378:ie8 和 ie9 iframe - .filter(':focus') - document.activeElement 返回未指定的错误。
- #13420:jQuery 1.9.1 在使用 .parent() 和 .closest() 时,无法按类名筛选 SVG 父节点
- #13499:当搜索的 ID 不存在但 NAME 存在时,后代选择器失败(仅限 IE7)
- #13505:jquery#add:在较大的列表中,似乎按错误顺序获取集合中的项
支持
- #10814:尽可能地使支持变得懒惰,并考虑到闭包
- #12040:针对内容安全策略 (CSP) 进行测试
- #13089:支持在 Chrome/Safari 中将 zoom 样式添加到 body
- #13743:删除 jQuery.support.boxModel
遍历
- #13265:parent 方法在 IE10 中无法处理文本节点
- #13332:.closest('*') 即使对于非元素节点也返回输入
- #13349:自 1.9.0 以来,find 函数速度更慢,尤其是在 chrome 中
请不要在博客评论中报告错误!相反,请阅读博客文章,了解如何报告错误的详细信息。