jQuery 3.3.1 – 修复发布标签中的依赖项

发布于 作者

我们在 jQuery 3.3.0 的发布中遇到一个问题,因此立即发布了另一个标签。代码本身完全相同,但我们的发布依赖项(仅在发布期间使用)由于 npm 版本 5+ 的新行为,被添加到 jQuery 包本身的依赖项中。

如果从 npm 或 GitHub 安装,现在推荐使用 jQuery 3.3.1。如果通过任何 CDN 使用 jQuery,则构建的文件仅在版本号上有所不同。

对于给您带来的不便,我们深表歉意,并已更新我们的发布脚本以解决此问题。

请参阅 jQuery 3.3.0 博客文章,了解此版本中的所有相关代码更改。

下载

您可以从 jQuery CDN 获取文件,或直接链接到它们

https://code.jqueryjs.cn/jquery-3.3.1.js

https://code.jqueryjs.cn/jquery-3.3.1.min.js

您也可以从 npm 获取此版本

npm install jquery@3.3.1

精简版

有时您不需要 ajax,或者您更喜欢使用专注于 ajax 请求的许多独立库。而且,通常使用 CSS 和类操作来完成所有 Web 动画会更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,不包括这些模块。如今,jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k gzip 字节 – 24k 与 30k。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.3.1.slim.js
https://code.jqueryjs.cn/jquery-3.3.1.slim.min.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。

jQuery 3.3.0 – 一束芬芳的弃用和……是新的功能吗?

发布于 作者

距离上次 jQuery 发布已经有一段时间了,但核心团队并没有闲着。我们为您带来了一个全新的小版本,甚至还包含了一个新功能!

.addClass().removeClass().toggleClass() 方法现在接受一个 数组 的类。


jQuery(elem).addClass([
   'dave', 'michał', 
   'oleg', 'richard', 
   'jason', 'timmy'
]);

通常,jQuery 并不希望添加任何新内容。我们倾向于更多地关注我们可以删除的内容,而不是我们可以添加的内容。但是,当我们看到这个功能请求时,我们想知道为什么之前没有添加它。

从 jQuery 3.0+ 升级时,不应存在兼容性问题。如果您尚未升级到 jQuery 3+,请查看 3.0 升级指南jQuery Migrate 3.0 插件 将帮助您识别代码中的兼容性问题。

请尝试使用此新版本,并 告知我们您遇到的任何问题

弃用

在这个版本中,我们修剪了一些玫瑰、百合和向日葵。其中一些闻起来会更香,但把它们放在一起,你就会得到一束美丽的……弃用康乃馨

这些函数随着时间的推移已经失去了部分用处,或者被认为不如可用的替代方案更好,或者最初是用于内部用途的。虽然大多数这些将在 jQuery 4.0 中删除,但值得注意的是,我们不认为弃用方法意味着它将被删除;这意味着我们鼓励使用替代方案。例如,像 .click() 这样的事件别名可能永远不会被删除。

命令行测试

伟大的 Timo Tijhof 使能够 使用 grunt 和 karma 在命令行上运行所有 jQuery 测试。这是我们一直想要但由于需要 php 服务器来运行 ajax 测试而变得复杂的事情。感谢 Timo 的实现!

注意:jQuery 不再运行任何 PhantomJS 1.x 上的测试。

下载

您可以从 jQuery CDN 获取文件,或直接链接到它们

https://code.jqueryjs.cn/jquery-3.3.0.js

https://code.jqueryjs.cn/jquery-3.3.0.min.js

您也可以从 npm 获取此版本

npm install jquery@3.3.0

精简版

有时您不需要 ajax,或者您更喜欢使用专注于 ajax 请求的许多独立库。而且,通常使用 CSS 和类操作来完成所有 Web 动画会更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,不包括这些模块。如今,jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k gzip 字节 – 24k 与 30k。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.3.0.slim.js
https://code.jqueryjs.cn/jquery-3.3.0.slim.min.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。

感谢

感谢所有参与本次发布的人员,包括提交补丁、报告错误或进行测试的贡献者,例如 Andreas Solledar, Basil Belokon, Boom Lee, “CDAGaming”, Dave Methvin, Erik Lax, Henry Zhu, Jason Bedard, Jordan Beland, Matan Kotler-Berkowitz, Michał Gołębiowski-Owczarek, Nilton Cesar, Pierre Spring, Richard Gibson, Saptak Sengupta, Shashanka Nataraj, Steve Mao, Timo Tijhof, Faisal Irfan Yar Khan,以及整个 jQuery 团队。

 

变更日志

GitHub changelog: 3.3.0 中修复的问题 | 所有更改

Ajax

  • 为所有请求添加 ontimeout 处理程序 (#3586, 262acc6f)
  • 不要处理无实体主体请求上的非字符串数据属性 (#3438, d7237896)

属性

  • 功能:允许在 add/remove/toggleClass 中使用数组参数 (#3532, 80f57f8a)

构建

  • 在 Node.js 8 上测试,停止在 Node.js 7 上测试 (bef46a2a)
  • 更新到 Babel 7,使用 for-of 插件而不是 preset-es2015 (90bac40a)
  • 删除 package-lock.json,将其添加到 .gitignore (#3792, 7037facc)
  • 在 Node.js 9 上测试 (3e902a81)
  • 修复 Android 4.0 中的 UglifyJS 输出;更新 uglify (#3743, c9efd11f)

核心

CSS

  • 从 cssProps 中删除浮点数映射 (bbf33428)
  • 正确设置具有非默认缩放的 support 属性 (#3808, f00a0759)
  • 检测错误报告为百分比的更多 WebKit 样式 (#3777, 94ddf620)
  • 检索内联样式之前计算 (c4598da4)
  • 避免来自 CSS 上限的单位转换干扰 (#2144, 692f9d4d)

Deferred

Dimensions

  • 改进 offsetWidth/offsetHeight 回退 (#3698, #3602, a4957849)
  • 在“padding”框中包含滚动沟槽 (#3589, 80f1c823)
  • 回退到内联元素的 offsetWidth/Height (#3571, 473d2ea7)
  • 不要信任非像素计算宽度/高度 (#3611, 3cf1d14c)
  • 检测并处理 content-box 尺寸处理不当的问题 (#3699, 3fcddd6e)

文档

  • 创建 CODE_OF_CONDUCT.md (e84d3bc0)
  • 更新 stripAndCollapse 的 HTML 规范链接 (#3594) (e1b1b2d7)

事件

  • 将事件别名移动到已弃用部分 (#3214, 022b69a4)
  • `stopPropagation()` 在原生事件处理程序上 ( #3693, 490db839)

Filter

  • 在 winnow 中使用直接过滤器 (#3272, 4765bb5c)

操作

  • 使用 `.children` 选择 tbody 元素 (a88b48ea)
  • 添加对具有 module 类型脚本的支持 (#3871, 5d3a968e)

Offset

  • 使用正确的偏移父元素;包含所有边框/滚动值 (#3080, #3107, 1d2df772)

支持

  • 正确检查 IE9 绝对滚动框处理不当的问题 (#3699, #3730, 20cdf4e7)

jQuery 3.2.1 现已发布,包含一些补丁

发布于 作者

jQuery 3.2.1 现已发布!此版本包含一些针对四天前在 3.2.0 构建中引入的回归错误的补丁。我们希望尽快发布此补丁,以修复您在升级时可能遇到的任何错误。最重要的是,它与获取没有显式设置尺寸的内联元素的宽度或高度有关。现在应该可以按预期工作。完整的更改列表如下。另请参阅 3.2.0 博客文章,了解在从 jQuery 3.1.1 升级时仍然适用的错误修复和改进。

从 jQuery 3.0+ 升级时,不应存在兼容性问题。如果您尚未升级到 jQuery 3+,请查看 3.0 升级指南jQuery Migrate 3.0 插件 将帮助您识别代码中的兼容性问题。

请尝试使用此新版本,并 告知我们您遇到的任何问题

更改

核心

  • 确保 jQuery.holdReady 位于正确的位置 (#3573, fcc9a9ec)

Dimensions

  • 确保我们获得具有 display “inline” 的元素的正确宽度和高度值 (#3571, 473d2ea7)

事件

  • 确保将触发数据传递给单选按钮点击事件处理程序 (#3579, a6b07052)
  • 撤销:以相同的方式触发复选框和单选按钮点击事件 (35785a32)。
  • 撤销:添加单选按钮点击触发测试 (4d6b4536)。

GitHub changelog: 3.2.1 中修复的问题 | 所有更改

下载

您可以从 jQuery CDN 获取文件,或直接链接到它们

https://code.jqueryjs.cn/jquery-3.2.1.js

https://code.jqueryjs.cn/jquery-3.2.1.min.js

您也可以从 npm 获取此版本

npm install jquery@3.2.1

精简版

有时您不需要 ajax,或者您更喜欢使用许多独立的库来关注 ajax 请求。而且,通常使用 CSS 和类操作来完成所有网络动画会更简单。除了包含 ajax 和效果模块的常规 jQuery 版本外,我们还发布了一个“精简”版本,不包括这些模块。这些天 jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k gzip 字节 – 23.6k 与 30k。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.2.1.slim.js
https://code.jqueryjs.cn/jquery-3.2.1.slim.min.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。

感谢

感谢所有参与此版本的人,包括 Steve Mao 和整个 jQuery 团队,他们通过测试、报告错误或提交补丁来提供帮助。

jQuery 3.2.0 发布!

发布于 作者

jQuery 3.2.0 已发布!

此版本包含一些错误修复、改进和一些弃用。从 jQuery 3.0+ 升级不应存在兼容性问题。

如果您尚未升级到 jQuery 3+,请查看 3.0 升级指南jQuery Migrate 3.0 插件将帮助您识别代码中的兼容性问题。

请尝试使用此新版本,并 告知我们您遇到的任何问题

重要更新

  • 添加了对自定义 CSS 属性的支持 (#3144)。
  • 弃用 jQuery.holdReady (#3288)。
  • 弃用 jQuery.nodeName (#3475)。
  • 弃用 jQuery.isArray (#2961)。
  • 修复了 .width()、.height() 和相关方法中的一个错误,该错误将 CSS 变换包含在计算中。例如,具有样式 transform: scale(2x) 的元素不应将其宽度和高度值加倍 (#3193)。
  • 为 .contents() 方法添加了对 <template> 元素的支持 (#3436)。
  • 将已弃用的模块添加回精简版本。此更改影响不大,因为该模块的尺寸很小。我们认为,同时从主 jQuery 构建和精简构建中删除已弃用的部分更有意义 (#3237)。

下载

您可以从 jQuery CDN 获取文件,或直接链接到它们

https://code.jqueryjs.cn/jquery-3.2.0.js

https://code.jqueryjs.cn/jquery-3.2.0.min.js

您也可以从 npm 获取此版本

npm install jquery@3.2.0

精简版

有时您不需要 ajax,或者您更喜欢使用许多独立的库来关注 ajax 请求。而且,通常使用 CSS 和类操作来完成所有网络动画会更简单。除了包含 ajax 和效果模块的常规 jQuery 版本外,我们还发布了一个“精简”版本,不包括这些模块。这些天 jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k gzip 字节 – 23.6k 与 30k。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.2.0.slim.js
https://code.jqueryjs.cn/jquery-3.2.0.slim.min.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。

感谢

感谢所有参与此版本的人,包括 Connor AthertonJason BedardDavid Broder-RodgersOleg GaidarenkoMichał GołębiowskiRichard Gibsonkaran-96Manoj KumarAlexander LisianoiAlex LoudenAlex Padilla 和整个 jQuery 团队。

GitHub changelog: 3.2.0 中修复的问题 | 所有更改

完整 changelog

Callbacks

  • 防止 add() 在使用内存列表时解锁 (#3469, 9d822bc1)

核心

  • 弃用 jQuery.holdReady (#3288, bd984f0e)
  • 弃用 jQuery.nodeName (#3475, ac9e3016)
  • 弃用 jQuery.isArray (#2961, 1b9575b9)

CSS

  • 删除 getWidthOrHeight 中的未使用内部函数 (96533cd0)
  • 支持自定义属性 (#3144, 619bf98d)

Deferred

  • 停止发明 jQuery.when() 解析值 (#3442, 5d79c646)

Dimensions

  • 在检索宽度/高度时忽略变换 (#3193, c920ff6e)

文档

  • 从 .npmignore 中删除 jscs.json (fedc1aa6)
  • 更正 issue 模板中的错别字 (a8816caf)

Effects

  • 稳定 rAF 逻辑并将其与超时逻辑对齐 (#3434, 6d43dc42)
  • 解决最近的 Callbacks 修复中发现的问题 (#3502, #3503, 3c89329c)

事件

  • 以相同的方式触发复选框和单选按钮点击事件 (#3423, b442abac)
  • 添加单选按钮点击触发测试 (5f35b5b4)

操作

  • 将 tbody 搜索限制为子节点 (#3439, efdb8a46)

Offset

  • 消除很少使用的内部函数 (#3449, bf3a43ef)
  • 报告 0 尺寸元素的偏移量 (#3267, 1777899a)

Tests

  • 跳过非支持浏览器的 CSS 自定义属性测试 (bcec54ee)
  • 更新加载器,使测试页面始终获取 jQuery (14b393d0)
  • 添加了符号分隔的标签名称的测试 (#2006, bd9145fa)
  • 清理 CSS 自定义属性支持测试 (fc34dbc2)

Traversing

  • $.fn.contents() 支持 HTMLTemplateElement (#3436, 3e3b09d6)

构建

  • 在 Node.js 7 上运行测试 (7bb62bb3)
  • 停止在 Node.js 0.10 上进行测试 (5b4cb0d3)
  • jQuery Foundation -> JS Foundation (7fbab881)
  • 使 @CODE 替换正则表达式更健壮 (4e509677)
  • ESLint 设置改进 (cbc8638c)
  • 从 .npmignore 中删除 jscs.json (b3e0a560)
  • 将大部分 dist 文件夹添加到 .eslintignore (1754e315)
  • 使用有效的 ecmaVersion (8cb4cd71)
  • 停止支持在 Node.js 0.12 上构建 (d10ac0e5)
  • 修复 AMD 模式下的测试 (56136897)
  • 修复 package.json 中的 markerPattern 和 ticketPattern 正则表达式 (25c6a0a2)
  • 在精简版中保留已弃用的模块 (#3237, 0588d0ce)

jQuery 3.1.1 发布!

发布于 作者

jQuery 3.1.1 现已发布!

此版本包含一些错误修复和改进。与所有补丁版本发布一样,此版本没有新功能或预期的兼容性问题(如果从 jQuery 3.0+ 升级)。

我们修复了 禁用选项的选择器问题暴露了 jQuery.noConflict,即使在 jQuery 使用 AMD 加载时,以及 修复了一些关于空白符的问题。我们还修复了 map 文件的问题,这将在调试期间使用 CDN 副本时有所帮助。

如果您尚未升级到 jQuery 3+,请查看 3.0 升级指南jQuery Migrate 3.0 插件将帮助您识别代码中的兼容性问题。

请尝试使用此新版本,并 告知我们您遇到的任何问题

GitHub changelog: 3.1.1 中修复的问题 | 所有更改

下载

您可以从 jQuery CDN 获取文件,或直接链接到它们

https://code.jqueryjs.cn/jquery-3.1.1.js

https://code.jqueryjs.cn/jquery-3.1.1.min.js

您也可以从 npm 获取此版本

npm install jquery@3.1.1

精简版

有时你不需要 ajax,或者你更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行所有网络动画会更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。总而言之,它排除了 ajax、效果和当前已弃用的代码。尽管这些天 jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k gzip 字节 – 23.6k 与 30k。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.1.1.slim.js
https://code.jqueryjs.cn/jquery-3.1.1.slim.min.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。

感谢

非常感谢所有参与此版本测试、报告错误或提交补丁的人员,包括 Oleg GaidarenkoMichał GołębiowskiRichard GibsonAlexander LisianoiSteve MaoDave Methvin 和整个 jQuery 团队。

jQuery 基金会与标准

发布于 作者

多年来,jQuery 基金会一直致力于让 Web 开发者在标准制定过程中拥有发言权。 这就是为什么我们很高兴能够正式建立我们与 chapters.io 的合作关系,这是一个努力,它使我们能够与全球的聚会和支持者合作,帮助开发者更多地了解最新的标准并讨论当前的提案。

我们的首个活动将是一个定期论坛,由我们自己的代表共同组织,并得到宾夕法尼亚州匹兹堡的 Code and SupplyBearded 的支持。 8月2日星期二,Brian Kardell 将在 Code and Supply 的常规聚会上 发表演讲,更多地讨论标准和 chapters。 从那里我们将组织第一次会议。 如果您在匹兹堡并且从事 Web 开发,请来参加。 如果您有兴趣在您的城市组织和举办聚会,请在 jQuery 基金会的标准团队 GitHub 上提交 issue,我们将尽力找到可以帮助协调的人员。

jQuery 基金会知道 Web 在开发者参与的情况下才能达到最佳状态,但传统标准并没有将这一点纳入其模式。 标准通常由浏览器制造商和在结果中拥有重大利益的大公司推动。 有时标准对这些群体来说是合理的,但当在互联网的严酷现实中部署时,效果却不佳。

2011年10月,Addy Osmani 在博客上发表文章宣布成立 jQuery 标准团队,任命 Yehuda Katz 和 Paul Irish 来帮助代表开发者社区参与 W3C 和 TC39。 多年来,许多 jQuery 代表为倡导开发者并改善标准制定过程做出了很多努力。

事实上,自那时以来,标准已经有了很大的改进——而 jQuery 过去和现在的代表在沿途的每一步都提供了帮助。

2012年12月,我们帮助选举了一批候选人来改革 W3C。 2013年,jQuery 成员如 Yehuda Katz、我自己(Brian Kardell)、Paul Irish 和 Rick Waldron 帮助撰写了 可扩展 Web 清单。 这份文件为我们如何重新关注标准、纳入开发者的声音并重新构想更好的未来奠定了新的愿景。 在过去的几年里,这种愿景逐渐成为 Web 标准机构中推动力的源泉。 然后,在 2014 年,再次是 jQuery 呼吁 W3C 的年度会议 (TPAC) 官方采用、支持并找到更好的方法来纳入开发者的声音。

可扩展 Web 清单与 Addy 在原始帖子中表达的许多相同原则有关:它鼓励标准机构让开发者参与进来,并创建加强反馈循环的方法。 正如 Addy 在原始帖子中所说

……我们有多少次觉得我们的声音、建议和想法被那些负责定义这些标准的人听到? 现实是,尽管我们中的许多人希望看到改变,但由于时间限制和冗长的正式流程,我们无法参与标准讨论、参与编写规范以及为功能的未来贡献会议。 这使得 Web 开发者难以发声。

传统的标准参与模式无法规模化。 数百万开发者无法飞往世界各地参加会议,数百万人的邮件列表也无法规模化。 Chapters 的目标是提供一个开发者和标准之间的桥梁,使每个人都能参与其中。 如果这听起来很有趣,请参与并参与进来! 让你的声音被听到!

jQuery 3.1.0 发布 – 不再有静默错误

发布于 作者

不久前,我们发布了 jQuery 3.0。jQuery 3.0 的主要功能之一是对 jQuery Deferreds 进行了一次小规模的重写。具体来说,我们使其与 Promises/A+ 规范兼容。这意味着错误必须被静默并作为拒绝值传递给拒绝处理程序(使用 deferred.catch() 添加)。这有防止 Promise 处理程序被运行时错误阻塞的优点,但如果未添加拒绝处理程序,则错误被静默的缺点。虽然这对 Deferreds 来说是正确的做法,但我们也更改了 jQuery.readyjQuery.fn.ready,使其在底层使用新的符合规范的 Deferreds。

不幸的是,如果您使用通常的方式来附加 ready 处理程序(例如 jQuery(function() {})jQuery(document).ready(function() {})),则无法添加拒绝处理程序。此外,不明显您处于 Deferred 环境中。任何运行时异常都会被吞噬并丢失在太空中。我想它们最终会出现在冥王星附近,而冥王星甚至都不是一颗行星了!虽然有一些 解决方法,但这对我们来说是不可接受的。

我们立即着手解决这个问题,因此 jQuery 3.1.0 诞生了。错误将不再保持静默!默认情况下,您会看到它们记录到控制台。如果您希望对这些错误的处理方式有更多控制,我们还添加了一个入口点:jQuery.readyException。在大多数情况下,您不需要使用它,但任何在 ready 处理程序中抛出的错误都会传递给此函数(如果您需要它)。

jQuery.readyException =
  function(error) {
    // "error" is thrown from
    // any ready handler
  };

默认的 jQuery.readyException 将异步地重新抛出错误,以避免停止执行并将其记录到控制台。我们希望这能解决您在使用 jQuery 3.0 时可能遇到的任何调试问题。

我们不期望此版本有任何破坏性更改,但如果您在从以前的版本升级时遇到错误,请 告诉我们

如果您需要帮助从 jQuery 1.x 或 2.x 升级到 jQuery 3.0,请查看 3.0 升级指南jQuery Migrate 1.4.1 博客文章

3.1.0GitHub changelog

下载

您可以直接从 jQuery CDN 包含这些文件,也可以将它们复制到您自己的本地服务器。

https://code.jqueryjs.cn/jquery-3.1.0.js
https://code.jqueryjs.cn/jquery-3.1.0.min.js

精简版

有时你不需要 ajax,或者你更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行所有网络动画会更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。总而言之,它排除了 ajax、效果和当前已弃用的代码。尽管这些天 jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k gzip 字节 – 23.6k 与 30k。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.1.0.slim.js
https://code.jqueryjs.cn/jquery-3.1.0.slim.min.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。

非常感谢所有参与此版本测试、报告错误或提交补丁的人员,包括 Oleg GaidarenkoMichał Gołębiowski 和整个 jQuery 团队。

jQuery 3.0 正式发布!

发布于 作者

jQuery 3.0 现在发布了!这个版本的工作已经进行了自 2014 年 10 月以来。我们着手创建一个更精简、更快速的 jQuery 版本(同时考虑到向后兼容性)。我们删除了所有旧的 IE 解决方法,并在有意义的情况下利用了一些更现代的网络 API。它是 2.x 分支的延续,但进行了一些我们认为长期以来应该进行的重大更改。虽然 1.12 和 2.2 分支在一段时间内将继续接收关键支持补丁,但它们将不会获得任何新功能或主要修订。jQuery 3.0 是 jQuery 的未来。如果您需要 IE6-8 支持,您可以继续使用最新的 1.12 版本。

尽管版本号为 3.0,我们预计这些发布在升级现有代码时不会带来太多麻烦。是的,有一些“破坏性更改”证明了主要版本号的提升,但我们希望这些破坏不会影响太多人。

为了帮助升级,我们有一个全新的 3.0 升级指南。并且 jQuery Migrate 3.0 插件 将帮助您识别代码中的兼容性问题。您对这些更改的反馈将对我们有很大帮助,因此请在您的现有代码和插件上尝试一下!

您可以从 jQuery CDN 获取文件,或直接链接到它们

https://code.jqueryjs.cn/jquery-3.0.0.js

https://code.jqueryjs.cn/jquery-3.0.0.min.js

您还可以从 npm 获取发布版本

npm install jquery@3.0.0

此外,我们还发布了 jQuery Migrate 3.0。我们强烈建议使用它来解决 jQuery 3.0 中破坏性更改的任何问题。您可以在这里获取这些文件

https://code.jqueryjs.cn/jquery-migrate-3.0.0.js

https://code.jqueryjs.cn/jquery-migrate-3.0.0.min.js

npm install jquery-migrate@3.0.0

有关使用 jQuery Migrate 升级您的 jQuery 1.x 和 2.x 页面到 jQuery 3.0 的更多信息,请参阅 jQuery Migrate 1.4.1 博客文章

精简版

最后,我们在此版本中添加了一些新内容。有时您不需要 ajax,或者您更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行所有网络动画会更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。总而言之,它排除了 ajax、效果和当前已弃用的代码。这些天 jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k gzip 字节 – 23.6k 与 30k。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.0.0.slim.js

https://code.jqueryjs.cn/jquery-3.0.0.slim.min.js

此构建是使用我们的自定义构建 API 创建的,该 API 允许您排除或包含任何您喜欢的模块。有关更多信息,请查看 jQuery README
 

与 jQuery UI 和 jQuery Mobile 的兼容性

虽然大多数事情都可以正常工作,但 jQuery UI 和 jQuery Mobile 将在即将发布的版本中解决一些问题。如果您发现问题,请记住它可能已经在上游得到解决,并且使用 jQuery Migrate 3.0 插件 应该可以解决它。请期待即将发布的版本。

 

主要变更

以下只是这些版本中主要新功能、改进和错误修复的亮点,您可以在 3.0 升级指南 上深入了解更多详细信息。完整的已修复问题列表可在我们的 GitHub 错误跟踪器 上找到。如果您阅读了 3.0.0-rc1 的博客文章,则以下功能相同。

jQuery.Deferred 现在与 Promises/A+ 兼容

jQuery.Deferred 对象已更新,与 Promises/A+ 和 ES2015 Promises 兼容,并经过 Promises/A+ Compliance Test Suite 验证。这意味着我们需要对 .then() 方法进行一些重大更改。可以通过用现在已弃用的 .pipe() 方法(具有相同的签名)替换任何 .then() 的使用来恢复旧行为。

  1. .then() 回调中抛出的异常现在变成拒绝值。以前,异常会一直冒泡,从而中止回调执行。任何依赖于抛出异常的 deferred 的 deferred 都将永远无法解决。

  2. 示例:未捕获的异常与拒绝值

    
    var deferred = jQuery.Deferred();
    deferred.then(function() {
      console.log("first callback");
      throw new Error("error in callback");
    })
    .then(function() {
      console.log("second callback");
    }, function(err) {
      console.log("rejection callback", err instanceof Error);
    });
    deferred.resolve();
    

    以前,“第一个回调”被记录,并且抛出了错误。所有执行都已停止。既不会记录“第二个回调”,也不会记录“拒绝回调”。新的、符合标准的行为是,您现在将看到“拒绝回调”和 true 被记录。 err 是第一个回调的拒绝值。


  3. .then() 创建的 Deferred 的解析状态现在由其回调控制——异常成为拒绝值,而非 thenable 的返回值成为完成值。 以前,拒绝处理程序中的返回值会成为拒绝值。

  4. 示例:来自拒绝回调的返回值

    
    var deferred = jQuery.Deferred();
    deferred.then(null, function(value) {
      console.log("rejection callback 1", value);
      return "value2";
    })
    .then(function(value) {
      console.log("success callback 2", value);
      throw new Error("exception value");
    }, function(value) {
      console.log("rejection callback 2", value);
    })
    .then(null, function(value) {
      console.log("rejection callback 3", value);
    });
    deferred.reject("value1");
    

    之前,这会记录“rejection callback 1 value1”、“rejection callback 2 value2”和“rejection callback 3 undefined”。

    新的、符合标准的行为是,这会记录“rejection callback 1 value1”、“成功 callback 2 value2”和“rejection callback 3 [object Error]”。


  5. 回调始终异步调用,即使 Deferred 已经解决。 之前,这些回调在绑定时同步执行。

  6. 示例:异步与同步

    
    var deferred = jQuery.Deferred();
    deferred.resolve();
    deferred.then(function() {
      console.log("success callback");
    });
    console.log("after binding");
    

    之前,这会记录“success callback”然后“after binding”。 现在,它会记录“after binding”然后“success callback”。


重要提示:虽然捕获的异常对于浏览器内调试具有优势,但使用拒绝回调处理它们更具声明性(即显式性)。 请记住,这意味着您必须始终为使用 promise 的情况添加至少一个拒绝回调。 否则,某些错误可能会被忽略。

我们构建了一个插件来帮助调试兼容 Promises/A+ 的 Deferreds。 如果您在控制台中看不到足够的信息来确定错误的来源,请查看 jQuery Deferred Reporter Plugin

jQuery.when 也已更新为接受任何 thenable 对象,其中包括本机 Promise 对象。

https://github.com/jquery/jquery/issues/1722
https://github.com/jquery/jquery/issues/2102

为 Deferred 添加了 .catch()

catch() 方法被添加到 promise 对象中,作为 .then(null, fn) 的别名。

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

错误案例不会静默失败

也许在某个深刻的时刻,您会想知道:“窗口的偏移量是多少?” 然后您可能意识到这是一个疯狂的问题——窗口怎么可能拥有偏移量?

在过去,jQuery 有时会尝试让像这样的一些案例返回某些内容,而不是抛出错误。 在询问窗口偏移量的特定案例中,到目前为止的答案一直是 { top: 0, left: 0 }。 使用 jQuery 3.0,这些案例将抛出错误,以便不会默默忽略疯狂的请求。 请尝试此版本,看看是否有任何代码依赖于 jQuery 来掩盖无效输入的错误。

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

删除了已弃用的事件别名

.load.unload.error,自 jQuery 1.8 起已弃用,现在已不再存在。 使用 .on() 注册侦听器。

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

动画现在使用 requestAnimationFrame

在支持 requestAnimationFrame API 的平台上,几乎所有平台都支持 IE9 和 Android<4.4,jQuery 现在将在执行动画时使用该 API。 这应该会产生更流畅的动画并使用更少的 CPU 时间——并且在移动设备上还可以节省电池电量。

jQuery 几年前尝试使用 requestAnimationFrame,但与现有代码存在 严重的兼容性问题,因此我们不得不将其回滚。 我们认为我们已经通过在浏览器选项卡不可见时暂停动画解决了大多数这些问题。 尽管如此,任何依赖于动画始终以近乎实时运行的代码都在做出不切实际的假设。

某些 jQuery 自定义选择器的速度大幅提升

感谢 Google 的 Paul Irish 的侦探工作,我们确定了一些可以跳过大量额外工作的情况,当在同一文档中使用像 :visible 这样的自定义选择器多次时。 该特定案例现在快了 17 倍!

请记住,即使有了这项改进,像 :visible:hidden 这样的选择器也可能很昂贵,因为它们依赖于浏览器来确定元素是否实际显示在页面上。 在最坏的情况下,这可能需要完全重新计算 CSS 样式和页面布局! 虽然我们通常不阻止使用它们,但我们建议测试您的页面,以确定这些选择器是否会导致性能问题。

此更改实际上已包含在 1.12/2.2 中,但我们想重申一下 jQuery 3.0。

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

如上所述,升级指南现在可供任何准备尝试此版本的人使用。 除了有助于升级之外,它还列出了更多值得注意的更改。

 

感谢

感谢所有通过代码贡献、问题报告等方式帮助本次发布的人员,包括但不限于 Jason Bedard, Fredrik Blomqvist, Leonardo Braga, Ralin Chimev, Jon Dufresne, Oleg Gaidarenko, Richard Gibson, Michał Gołębiowski, Scott González, Zack Hall, Alexander K, Martijn W. van der Lee, Alexander Lisianoi, Steve Mao, Dave Methvin, Jha Naman, Jae Sung Park, Todor Prikumov, William Robinet, Felipe Sateler, Damian Senn, Josh Soref, Jun Sun, Christophe Tafani-Dereeper, Vitaliy Terziev, Joe Trumbull, Bernhard M. Wiedemann, Devin Wilson,以及 Henry Wong

 

变更日志

Ajax

  • 减少 21 个字节 (eaa3e9f)
  • 保留请求中的 URL 哈希 (#1732, e077ffb)
  • 使用正确的上下文执行 jQuery#load 回调 (#3035, 5d20a3c)
  • 确保 ajaxSettings.traditional 仍然有效 (#3023, df2051c)
  • 删除不必要的 jQuery.trim 用法 (0bd98b1)

属性

  • 避免非小写属性 getter 的无限递归 (#3133, e06fda6)
  • 添加支持注释并修复 @ tabIndex 钩子 (9cb89bf)
  • 为 select 上的设置值去除/折叠空格 (#2978, 7052698)
  • 删除冗余的父级检查 (b43a368)
  • 修复在 IE<=11 中设置选项的选中状态 (#2732, 780cac8)

CSS

  • 不要解决 IE 11 全屏 iframe 尺寸问题 (#3041, ff1a082)
  • 除非它们具有 display: none,否则将分离的元素切换为可见 (#2863, 755e7cc)
  • 确保 elem.ownerDocument.defaultView 不为 null (#2866, 35c3148)
  • 将 animation-iteration-count 添加到 cssNumber (#2792, df822ca)
  • 恢复 .show 中的级联覆盖行为 (#2654, #2308, dba93f7)
  • 阻止 Firefox 将断开连接的元素视为级联隐藏 (#2833, fe05cf3)

核心

Deferred

  • 将 jQuery.when 中的两个路径分开 (#3029, 356a3bc)
  • 为 jQuery.when 原始转换提供显式的 undefined 上下文 (#3082, 7f1e593)
  • 删除默认回调上下文 (#3060, 7608437)
  • 警告可能为编程错误的异常 (#2736, 36a7cf9)
  • 正确地从解包的 promise 中传播进度 (#3062, d5dae25)
  • 在可能的情况下使 jQuery.when 同步 (#3100, de71e97)
  • 删除 $.when 中的未记录的进度通知 (#2710, bdf1b8f)
  • 为异常提供更好的堆栈诊断 (07c11c0)

Dimensions

  • 添加负边框和填充的测试 (f00dd0f)

文档

  • 修复各种拼写错误 (aae4411)
  • 更新与 IE 相关的支持注释 (693f1b5)
  • 修复 attributes 模块中的不正确的注释 (5430c54)
  • 更新支持 https 的链接 (b0b280c)
  • 更新支持注释以遵循新的语法 (6072d15)
  • 尽可能使用 HTTPS (1de8346)
  • 为 jsfiddle 和 jsbin 使用 HTTPS URL (63a303f)
  • 添加 FAQ 以减少问题中的噪音 (dbdc4b7)
  • 添加关于使用 AMD 加载源代码的说明 (#2714, e0c25ab)
  • 添加关于使用 AMD 进行代码组织的说明 (#2750, dbc4608)
  • 引用新的功能指南和 API 原则 (#2320, 6054139)

Effects

事件

  • 允许在没有目标的条件下构造 jQuery.Event (#3139, 2df590e)
  • 添加触摸事件属性,消除对插件的需求 (#3104, f595808)
  • 添加最常用的指针事件属性 (7d21f02)
  • 删除 fixHooks、propHooks;切换到使用 addProp 的 ES5 getter (#3103, #1746, e61fccb)
  • 使事件分派可被 JavaScript 引擎优化 (9f268ca)
  • 在添加时评估委托选择器 (#3071, 7fd36ea)
  • 覆盖无效委托选择器边缘情况 (e8825a5)
  • 修复使用 null 处理程序的 .on() 链 (#2846, 17f0e26)
  • 删除事件对象的 pageX/pageY 填充 (#3092, 931f45f)

活动

  • 不要执行来自模拟的本机 stop(Immediate)Propagation (#3111, 94efb79)

操作

Offset

  • 解决严格模式 ClientRect “无 setter” 异常 (3befe59)

选择器

序列化

  • 将字面量和函数返回的 null/undefined 视为相同 (#3005, 9fdbdd3)
  • 减小尺寸 (91850ec)

支持

Tests

  • 考虑 Safari 9.1 (234a2d8)
  • 将选择限制为 attributes.js 中的 #qunit-fixture (ddb2c06)
  • 将 Edge 的 clearCloneStyle 预期支持设置为 true (28f0329)
  • 修复 Android 5.0 的库存 Chrome 浏览器和 Yandex.Browser 中的 Deferred 测试 (5c01cb1)
  • 添加 jQuery.isPlainObject 的额外测试 (728ea2f)
  • 构建:更新 QUnit 并修复不正确的测试 (b97c8d3)
  • 修复 Android 4.4 中的操作测试 (0b0d4c6)
  • 删除一个属性测试的副作用 (f9ea869)
  • 考虑新的偏移测试 (f52fa81)
  • 使 iframe 测试在检查 isReady 后等待 (08d73d7)
  • 重构 testIframe() 以使其更 DRY 和一致 (e5ffcb0)
  • 弱化 jQuery.when 对 jQuery.ready.then 的同步假设 (f496182)
  • 测试元素位置超出视图范围(#2909a2f63ff
  • 使 Safari 9.0/9.1 的正则表达式匹配更具弹性(7f2ebd2

Traversing

  • .not/.filter 与非元素的一致性(#28080e2f8f9
  • 永远不要让 .closest() 匹配位置选择器(#2796a268f52
  • 恢复 .find 中的 jQuery push 行为(#23704d3050b

jQuery 3.0 Release Candidate…发布!

发布于 作者

欢迎来到 jQuery 3.0 的 Release Candidate!这是我们预计发布为 jQuery 3.0 最终版本的代码(除非发现重大错误或回归)。发布后,jQuery 3.0 将成为 jQuery 的唯一版本。1.12 和 2.2 分支将继续接收关键支持补丁一段时间,但不会获得任何新功能或重大修订。请注意,jQuery 3.0 不支持 IE6-8。如果您需要 IE6-8 支持,可以继续使用最新的 1.12 版本。

尽管版本号为 3.0,我们预计这些发布在升级现有代码时不会带来太多麻烦。是的,有一些“破坏性更改”证明了主要版本号的提升,但我们希望这些破坏不会影响太多人。

为了协助升级,我们有一个全新的 3.0 升级指南。并且 jQuery Migrate 3.0-rc 插件将帮助您识别代码中的兼容性问题。您对这些更改的反馈将对我们非常有帮助,请在您的现有代码和插件上尝试一下!

您可以从 jQuery CDN 获取文件,或直接链接到它们

https://code.jqueryjs.cn/jquery-3.0.0-rc1.js

https://code.jqueryjs.cn/jquery-3.0.0-rc1.min.js

您也可以从 npm 获取 Release Candidate

npm install jquery@3.0.0-rc1

此外,我们还发布了 jQuery Migrate 3.0 的 Release Candidate。我们强烈建议使用它来解决 jQuery 3.0 中破坏性更改的任何问题。您可以在这里获取这些文件

https://code.jqueryjs.cn/jquery-migrate-3.0.0-rc1.js

https://code.jqueryjs.cn/jquery-migrate-3.0.0-rc1.min.js

npm install jquery-migrate@3.0.0-rc1

有关如何使用 jQuery Migrate 将您的 jQuery 1.x 和 2.x 页面升级到 jQuery 3.0 的更多信息,请参阅 昨天的 jQuery Migrate 博客文章

 

主要变更

以下只是这些发布中主要新功能、改进和错误修复的亮点,您可以在 3.0 升级指南中了解更多详细信息。完整的修复问题列表可在我们的 GitHub 错误跟踪器上找到。

jQuery.Deferred 现在与 Promises/A+ 兼容

jQuery.Deferred 对象已更新,与 Promises/A+ 和 ES2015 Promises 兼容,并通过 Promises/A+ Compliance Test Suite 进行了验证。这意味着我们需要对 .then() 方法进行一些重大更改

  • .then() 回调中抛出的异常现在将成为拒绝值。 以前,异常会一直冒泡,中止回调执行并不可逆地锁定父级和子级 Deferred 对象。
  • .then() 创建的 Deferred 的解析状态现在由其回调控制——异常成为拒绝值,而非 thenable 的返回值成为完成值。 以前,拒绝处理程序中的返回值会成为拒绝值。
  • 回调始终异步调用。 以前,它们会在绑定或解析时立即调用,以两者中较晚者为准。

考虑以下示例,其中父级 Deferred 被拒绝,并且子级回调会生成一个异常


var parent = jQuery.Deferred();
var child = parent.then( null, function() {
  return "bar";
});
var callback = function( state ) {
  return function( value ) {
    console.log( state, value );
    throw new Error( "baz" );
  };
};
var grandchildren = [
  child.then( callback( "fulfilled" ), callback( "rejected" ) ),
  child.then( callback( "fulfilled" ), callback( "rejected" ) )
];
parent.reject( "foo" );
console.log( "parent resolved" );

从 jQuery 3.0 开始,这将首先记录“parent resolved”,然后调用任何回调,每个子级回调将记录“fulfilled bar”,并且孙级对象将使用 Error “baz” 被拒绝。 在以前的版本中,它会记录“rejected bar”(子级 Deferred 被拒绝而不是完成)一次,然后立即以未捕获的 Error “baz” 终止(未记录“parent resolved”,并且孙级对象未解析)。

虽然捕获异常对于浏览器内调试具有优势,但使用拒绝回调来处理它们更具声明性(即明确性)。 请记住,这意味着您有责任始终为使用 promise 时添加至少一个拒绝回调。 否则,任何错误都将被忽略。

可以通过使用现在已弃用的 .pipe() 方法(其具有相同的签名)来恢复旧行为。

我们还构建了一个插件来帮助调试与 Promises/A+ 兼容的 Deferred。 如果您在控制台上看不到足够的信息来确定错误的来源,请查看 jQuery Deferred Reporter Plugin

jQuery.when 也已更新为接受任何 thenable 对象,其中包括本机 Promise 对象。

https://github.com/jquery/jquery/issues/1722
https://github.com/jquery/jquery/issues/2102

为 Deferred 添加了 .catch()

catch() 方法被添加到 promise 对象中,作为 .then(null, fn) 的别名。

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

错误案例不会静默失败

也许在某个深刻的时刻,您会想知道:“窗口的偏移量是多少?” 然后您可能意识到这是一个疯狂的问题——窗口怎么可能拥有偏移量?

在过去,jQuery 有时会尝试让像这样的一些案例返回某些内容,而不是抛出错误。 在询问窗口偏移量的特定案例中,到目前为止的答案一直是 { top: 0, left: 0 }。 使用 jQuery 3.0,这些案例将抛出错误,以便不会默默忽略疯狂的请求。 请尝试此版本,看看是否有任何代码依赖于 jQuery 来掩盖无效输入的错误。

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

删除了已弃用的事件别名

.load.unload.error,自 jQuery 1.8 起已弃用,现在已不再存在。 使用 .on() 注册侦听器。

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

动画现在使用 requestAnimationFrame

在支持 requestAnimationFrame API 的平台上,几乎所有平台都支持 IE9 和 Android<4.4,jQuery 现在将在执行动画时使用该 API。 这应该会产生更流畅的动画并使用更少的 CPU 时间——并且在移动设备上还可以节省电池电量。

jQuery 几年前尝试使用 requestAnimationFrame,但与现有代码存在 严重的兼容性问题,因此我们不得不将其回滚。 我们认为我们已经通过在浏览器选项卡不可见时暂停动画解决了大多数这些问题。 尽管如此,任何依赖于动画始终以近乎实时运行的代码都在做出不切实际的假设。

某些 jQuery 自定义选择器的速度大幅提升

感谢 Google 的 Paul Irish 的侦探工作,我们确定了一些可以跳过大量额外工作的情况,当在同一文档中使用像 :visible 这样的自定义选择器多次时。 该特定案例现在快了 17 倍!

请记住,即使有了这项改进,像 :visible:hidden 这样的选择器也可能很昂贵,因为它们依赖于浏览器来确定元素是否实际显示在页面上。 在最坏的情况下,这可能需要完全重新计算 CSS 样式和页面布局! 虽然我们通常不阻止使用它们,但我们建议测试您的页面,以确定这些选择器是否会导致性能问题。

此更改实际上已包含在 1.12/2.2 中,但我们想重申一下 jQuery 3.0。

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

如上所述,升级指南现在可供任何准备尝试此版本的人使用。 除了有助于升级之外,它还列出了更多值得注意的更改。

jQuery 1.12.4 和 2.2.4 发布

发布于 作者

jQuery 1.12.4 和 2.2.4 已发布! 这些是包含一些错误修复的小版本。 我们修复了那些使用 AMD 源代码的人遇到的一个粘性问题,以及 1.12.3 中的“:visible”选择器错误。

如果您需要任何帮助进行升级,请查看 最新版本的 jQuery Migrate 插件。 请注意,jQuery Migrate 1.4.1 旨在与这些 1.x 和 2.x 版本配合使用,而不是 jQuery 3.0。 jQuery 3.0 尚未发布——但我们很快会为您提供 RC——但 jQuery 3.0 也会发布另一个版本的 Migrate。

我们不期望此版本有任何破坏性更改,但如果您在从以前的版本升级时遇到错误,请 告诉我们

完整的变更日志

2.2.4GitHub 变更日志

1.12.4GitHub 变更日志

下载

您可以直接从 jQuery CDN 包含这些文件,或将它们复制到您自己的本地服务器。 1.x 分支包括对 IE 6/7/8 的支持,而 2.x 分支则不包括。

https://code.jqueryjs.cn/jquery-1.12.4.js
https://code.jqueryjs.cn/jquery-1.12.4.min.js

https://code.jqueryjs.cn/jquery-2.2.4.js
https://code.jqueryjs.cn/jquery-2.2.4.min.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。

非常感谢所有参与此版本的人,包括测试、报告错误或提交补丁的人,包括 Oleg GaidarenkoMichał Gołębiowski 和整个 jQuery 团队。