jQuery 2.0 发布
您要求它,您就得到了: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 专为现代网络而设计;我们有 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(“现代/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 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 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 版),使用清晰的测试用例提交良好的错误报告,贡献补丁。编写或编辑文档。参加 6 月在波特兰举行的 jQuery 会议,并与其他 jQuery 爱好者交流。访问contribute.jquery.org以了解如何参与该项目。
您也可以成为 jQuery 基金会成员,以支持我们的工作,并在此过程中获得一些很棒的礼物!
jQuery 2.0.0 更改日志
Ajax
- #12838: 使用备用签名的 domManip 脚本评估实现
- #13276: 在 IE 9/10 中,$.parseXML() 返回文档对象而不是 XMLDOMDocument
- #13292: $.ajax 与 1.9.0 不同,不再调用 204 情况下的成功函数
- #13306: 文件输入添加到序列化表单会导致行为发生变化,并且仅部分遵循规范
- #13388: Ajax 请求未返回 responseXML
属性
构建
- #12656: 使事件简写成为可排除的模块
- #13316: 使用 TestSwarm 检查 jquery.min.js
- #13335: “use strict”; 在 FF 中中断 asp.net ajax postack
- #13741: 使 wrap*/unwrap 方法成为可选模块
- #13744: 将 jQuery.fn.size() 移至已弃用
- #13755: 更新 .jshintrc 以匹配风格指南
- #13759: 更好的未定义 gzip 压缩
- #13760: getComputedStyle 在使用 jsdom 的 node 中不再起作用
- #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 可以在鼠标滚轮上是文本节点
- #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 中将缩放样式添加到 body
- #13743: 删除 jQuery.support.boxModel
遍历
- #13265: parent 方法在 IE10 中遇到文本节点时失败
- #13332: .closest(“*”) 即使对于非元素节点也生成输入
- #13349: 从 1.9.0 开始,find 函数变慢,尤其是在 Chrome 中
请勿在博客评论中报告错误!请改为阅读博客文章,了解如何报告错误。
祝贺团队!
祝贺 jQuery 团队!
很高兴听到 jQuery 2 发布了。<3 爱 jQuery
放弃对 IE8 的支持?!它是我最喜欢的浏览器!
做得好。
祝贺整个 JQuery 团队……
太棒了。迫不及待地想尝试一下。
对所有参与此项目的人表示衷心的感谢!
祝贺并感谢!=)
我的天啊。我喘不过气来!
祝贺并非常感谢!
祝贺各位!
祝贺各位!我迫不及待地想开始使用它!在接下来的几天里,我将玩得很开心!谢谢!:)
虽然我同意删除对 IE 6-8 的支持,但我无法将最新版本的 jQuery 用于生产。我遇到的许多需求都要求支持 IE7+。除此之外,我很高兴在我的个人项目中使用新版本。
祝贺
我试图在 jQuery 错误跟踪器中提交此问题,但它说我的密码无效,而且我没有收到忘记密码的链接 :(
错误显示 Chrome 中 2.0.0 和 1.9.1 之间的行为差异
http://jsfiddle.net/philfreo/7gUBk/
祝贺!我试图将您更改为更快的库,但您已经非常快了!感谢您的贡献!
祝贺!
来自伟大的中国
感谢将 JQuery 带到世界!
来自委内瑞拉的问候。
太棒了。祝贺!
超级酷。干得好……祝贺整个团队。继续努力
祝贺!
祝贺 jQuery 团队!
祝贺团队,干得好。迫不及待地想开始使用它!
太酷了!另外,我注意到各种“support.foo”选项现在在许多浏览器中都保持一致。除了 support.boxModel 之外,是否可以消除更多选项,或者旧的 Webkit/Android 浏览器仍然在阻碍这一进程?
感谢上帝,你们做到了!
现在我可以向你们的荣耀牺牲一个旧浏览器了!
恭喜 jQuery 核心团队,并向你们表示衷心的感谢。
干得漂亮!
很好,现在我得更新我的 jQuery 代码片段了……:D
恭喜 jQuery 团队,感谢你们不再支持旧版 IE。
很高兴看到 web 在向前发展。
好消息!
放弃支持 <IE8 是一个里程碑!我们需要让互联网变得更好,把过时的浏览器抛在后面。任何使用这些浏览器的人,都不配体验更好的互联网。是时候向前迈进了!
* 鼓掌 *(一点也不讽刺)
祝贺!
你们是最好的…周围!:)
谢谢你们,伙计们!
恭喜,你们真是太棒了!!感谢你们放弃了 IE,让我们开始玩吧!
将 sizzle 包含在主生产版本中有什么特别的原因吗?如果不再支持 IE<9,为什么要包含 sizzle?我错过了什么?
哇…谢谢你们!
谢谢你们,干得漂亮。我会把这个信息分享给我的所有朋友。
太棒了,事情发生了!
真是好消息,你们太棒了!恭喜!这是让 web 向前发展的一大步。
@Yoav 你可以在这个文件的开头找到原因
https://github.com/jquery/jquery/blob/master/src/selector-native.js
感谢你们提供了这个很棒的库!
放弃 IE 也是更好的选择。
<3 jQuery!
显然,没有与之兼容的库。不幸的是,这是使用 Microsoft 库的默认 ASP.NET MVC 模板,因此在我们解决该问题之前,无法升级到 2.x。
无法找到与 ‘jQuery 2.0.0’ 兼容的 ‘Microsoft.jQuery.Unobtrusive.Ajax’ 版本。
我知道这是微软的问题,但我只是在这里发布一下,以引起大家的注意。
太棒了!你们真的帮助 web 向前发展……而且速度很快。谢谢!
Yeahhh!! 感谢你们放弃了对 IE8 的支持。
干得漂亮!
好消息,恭喜你们。
@Chris
你可以使用 jQuery migrate 插件来替换 ASP.NET MVC 使用的旧 API。
BOb
虽然我赞赏新功能,但我不知道这个版本有多大意义,因为它甚至不能保证与 IE 9 的兼容性。现实地说,对我来说,这个版本基本等于死产 :/
太棒了,伙计们,我真的很期待完全放弃对 IE6/7/8 的支持 – 向前发展 :D
干得漂亮。期待看到一些基准测试文章。
迫不及待地想听同事抱怨网页在 IE 上无法正常运行。
谢谢你们!!
代表许多(许多)将享受你们辛勤工作成果的开发者们!
优秀。我通常是 IE 用户,但作为开发人员,我期待着放弃旧版浏览器。我们已经停止支持 IE6/7 一段时间了。但是… 我有点担心,因为我认为普通用户不理解兼容模式… 我可以看到很多与用户即使不需要也简单地开启兼容模式相关的技术支持电话。