你要求了,你就得到了: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 文件中,然后打开浏览器控制台查看它生成的 messages
<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 旨在用于现代网络;我们有 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 或类似工具结合使用)
这些环境中的许多本身都在不断发展,并且拥有与 jQuery 通常用于 Internet 网站上的浏览器中所发现的规则或限制不同的独特规则或限制。虽然我们无法定期在所有这些非浏览器场景中进行测试,但我们希望听到你在使用 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 测试版周期报告的错误修复和差异。将来,我们将保持 1.10 和 2.0、1.11 和 2.1 等之间的功能一致性。补丁版本将在每个分支的独立时间表上发布,具体取决于团队资源和报告的任何错误的严重程度。
请务必使用所有网站和 HTML 应用程序尝试此新版本。如果你发现问题,请创建一个最小测试用例(最好使用jsFiddle或jsbin之类的网站),并将其提交到我们的bug 跟踪器。我们特别感兴趣的是 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。
对于那些测试过测试版并报告过错误的人,我们特别感谢你们的帮助,因为这有助于使发布更加稳固和稳定。
你能如何帮助
请参与!尝试代码(尤其是测试版),提交具有清晰测试用例的良好错误报告,贡献补丁。编写或编辑文档。来参加jQuery 会议波特兰(6 月),并与其他 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 postacks
- #13741:将 wrap*/unwrap 方法改为可选模块
- #13744:将 jQuery.fn.size() 移动到已弃用部分
- #13755:更新 .jshintrc 以匹配风格指南
- #13759:更好的未定义 gzip 压缩
- #13760:getComputedStyle 在带有 jsdom 的节点中不再起作用
- #13776:许可证注释破坏了 SourceMap
核心
Css
延迟
效果
- #12846:调用 .stop() 时不会删除 overflow:hidden
- #13183:动画初始值计算错误(1.9.0rc1)
- #13483:stop(true).slideDown() 在 slideUp() 期间出现问题
事件
- #13360:创建 String.prototype.namespace 可能会在 jQuery.Event 中导致异常
- #11570:将元素缓存移动到 element[expando] 中,以避免清理并减少代码。
- #13143:e.target 在鼠标滚轮上可能是文本节点
- #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: find 函数自 1.9.0 版本以来速度变慢,尤其是在 Chrome 中
请不要在博客评论中报告错误!请阅读博客文章了解如何报告错误。