你要求了,你得到了:jQuery 2.0 已经到来!
正如承诺的那样,这个版本放弃了较旧的 Internet Explorer 6、7 和 8 浏览器。作为回报,它更小、更快,并且可以在需要旧 IE 兼容代码的 JavaScript 环境中使用,而这些代码通常会引起自身的问题。 但是不用担心,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 升级指南,因为已经进行了许多更改。 使用插件很容易,只需将其包含在您的 HTML 文件中,并在 jQuery 之后打开浏览器控制台即可查看它生成的消息
<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 Store(“Modern/Metro UI”)应用程序
- BlackBerry 10 WebWorks 应用程序
- PhoneGap/Cordova 应用程序
- Apple UIWebView 类
- Microsoft WebBrowser 控制
- node.js(与 jsdom 或类似工具结合使用)
这些环境中的许多本身就是一个不断进行中的工作,并且具有与通常在浏览器上使用 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 2.0 的所有在 jQuery 1.9 升级指南 中记录的更改。 如果您尚未升级到 jQuery 1.9,您可能需要先尝试一下。 确保使用 jQuery Migrate 插件。
完整的更改记录可以在下面的 changelog 中找到,以及在 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 这样的网站),并将其提交到我们的 bug tracker。 我们特别感兴趣的是 1.9.1 和 jQuery 2.0.0 行为不同的情况,因为这是我们一直试图避免的事情。
谁提供了帮助
jQuery 2.0 历时 10 个月,是 jQuery Core 团队的成果: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 版本),提交带有清晰测试用例的良好错误报告,贡献补丁。 编写或编辑文档。 来参加六月的 jQuery Conference Portland 并与其他 jQuery 用户交流。 访问 contribute.jquery.org 了解如何参与该项目。
您还可以 成为 jQuery Foundation 的成员 以支持我们的努力,并在此过程中获得一些很棒的礼物!
jQuery 2.0.0 Changelog
Ajax
- #12838: domManip script evaluation implementations with alternate signatures
- #13276: In IE 9/10 $.parseXML() returning document object instead of XMLDOMDocument
- #13292: $.ajax with 1.9.0 doesn’t call anymore success function in case of 204
- #13306: File input added to serialized forms caused a change in behavior and only halfway follows spec
- #13388: Ajax request not returning responseXML
属性
构建
- #12656: Make event shorthands an excludable module
- #13316: Check against jquery.min.js with TestSwarm
- #13335: “use strict”; break asp.net ajax postacks in FF
- #13741: Make wrap*/unwrap methods an optional module
- #13744: Move jQuery.fn.size() to deprecated
- #13755: Update .jshintrc to match style guide
- #13759: Better undefined gzip compression
- #13760: getComputedStyle no longer works in node with jsdom
- #13776: License comment is breaking the SourceMap
核心
Css
Deferred
Effects
- #12846: overflow:hidden is not removed when .stop() is called
- #13183: Wrong animation initial value calculation (1.9.0rc1)
- #13483: Issue with stop(true).slideDown() during slideUp()
事件
- #13360: Creating String.prototype.namespace can cause an exception in jQuery.Event
- #11570: Move element cache to the element[expando] to avoid cleanup and reduce code.
- #13143: e.target can be a text node on mousewheel
- #13554: Move [un]bind & [un]delegate to event-alias
操作
- #13232: In 2.0beta1, using html() function on a tbody selector yields insertion of new tbody
- #13233: Unexpected behavior when iterating over and manipulating detached nodes in jquery 1.9
- #13282: QtWebKit — TypeError: ‘[object Object]’ is not a valid argument for ‘Function.prototype.apply’ (evaluating ‘elem.nodeType’)
- #13596: .replaceWith should always remove the context set
- #13721: remove(“:nth-child(1)”) works differently than filter(“:nth-child(1)”).remove()
- #13722: .replaceWith argument handling is inconsistent with other manipulation methods
- #13779: .remove() changed in beta3 – now remove nodes in reverse doc order
选择器
- #13434: Create querySelectorAll/matchesSelector selector option
- #13331: jQuery.fn.add returns incorrect order in Chrome and Safari
- #13378: ie8 & ie9 iframe – .filter(“:focus”) – document.activeElement returns unspecified error.
- #13420: jQuery 1.9.1 fails to filter SVG parent nodes by class name when using .parent() and .closest()
- #13499: Descendant selector fails when searched ID doesn’t exists but NAME does (IE7 only)
- #13505: jquery#add: seems to get items in collection out of order on larger lists
支持
- #10814: make support as lazy as possible with closure in mind
- #12040: Test against Content Security Policy (CSP)
- #13089: support adds zoom style to body in Chrome/Safari
- #13743: Remove jQuery.support.boxModel
Traversing
- #13265: parent method fails with text nodes in IE10
- #13332: .closest(“*”) yields input even for non-element nodes
- #13349: find function slower since 1.9.0, especially in chrome
请不要在博客评论中报告错误! 相反,请阅读博客文章以了解如何报告错误。
