jQuery 3.6.1 维护版本

发布时间 作者

jQuery 3.6.1 现已发布!距离我们上一个版本发布已经有一段时间了。我们一直在寻找修复一些与焦点和模糊相关的难以捉摸的边缘情况,但我们始终无法找到正确的修复方案。如果 jQuery 中有任何难以修改的区域,那很可能是与焦点相关的。目前我们将这些问题保持原样,并在未来进行处理,尤其是因为这些更改最终可能会导致需要进行主要版本发布。请参阅 gh-4856gh-4950 了解详细信息。

话虽如此,这个版本仍然包含一些重要的修复,具体内容如下。

和往常一样,该版本已在我们 的 CDN 和 npm 包管理器上提供。其他第三方 CDN 也许很快就会提供该版本,但请记住,我们无法控制它们的发布时间表,它们需要一些时间才能发布。以下是 jQuery 3.6.1 的亮点

基础设施改进

在这个版本中,我们做了很多工作来更新一些测试和构建基础设施,包括将 CI 从 Travis CI 迁移到 GitHub Actions,在 Node 16 而不是 Node 15 上进行测试,通过 https 加载我们的测试监听器,并为自定义构建添加更准确的测试。我们还删除了存储库中一些文件中注释中的旧链接。这些链接指向的 URL 现已遭到破坏。虽然这些文件从未在发布版本中分发,但它们仍然存在于 GitHub 源代码中,现已删除。

不失去焦点

此版本中仍然 存在一个与焦点相关的修复。即使在删除 jQuery 焦点处理程序后,我们用于焦点的特殊事件处理仍然附加,这破坏了任何随后的手动焦点触发。例如,

$elem
  .on("focus", function() {})
  .off("focus")
  .trigger("focus");

将不会触发焦点。

在 addClass( 数组 ) 中跳过假值

我们 添加了支持,无需任何大小增加,即可跳过传递给 addClassremoveClass 的数组中的任何假值。

这使得像以下代码

elem.addClass( [ "a", "", "b" ] );

添加 ab 类。

与自定义 CSS 属性值的规范保持一致

CSS 规范的更改 要求修剪自定义属性。空格现在 已修剪,用于自定义 CSS 属性值。之前,像 --prop: value ; 这样的内容会保留值中的前导和尾随空格,返回 ” value “。

使用 HTML 注释追加脚本

我们发现了一个问题,我们的正则表达式在追加脚本时会从脚本中剥离 HTML 注释,这最终会在某些边缘情况下删除可执行脚本的一部分。幸运的是,我们的修复是 更多地依赖浏览器,但我们仍然需要在 3.x 分支中为 IE 剥离 CDATA 部分。这将在 4.0 中删除。

对 jQuery.trim 的性能提升

虽然 jQuery.trim 为了准备下一个主要版本,已在主分支中被本机 String#trim 取代,但它仍然在 3.x 分支中需要,用于该分支支持的一些浏览器,例如 Android 4.0。由于我们正则表达式的结构,存在一些非常慢的边缘情况。这已经改变,速度提升 非常大

升级

我们预计从 jQuery 3.0+ 版本升级时不会出现兼容性问题。要进行升级,请查看新的 3.5 升级指南。如果您还没有升级到 jQuery 3+,请先查看 3.0 升级指南

使用 jQuery Migrate 插件 可以帮助您识别代码中的兼容性问题。请尝试使用此新版本,并 告知我们您遇到的任何问题

如果您还无法升级到 3.5+,Daniel Ruf 非常热心地提供了 针对早期 jQuery 版本的补丁

下载

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

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

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

您也可以从 npm 获取此版本

npm install jquery@3.6.1

精简版本

有时您不需要 ajax,或者您更喜欢使用专门针对 ajax 请求的众多独立库之一。而且,通常使用 CSS 和类操作的组合来进行 Web 动画更简单。除了包含 ajax 和效果模块的常规版本 jQuery 之外,我们还发布了一个“精简”版本,它排除了这些模块。如今,jQuery 的大小很少会成为加载性能问题,但精简版本比常规版本压缩后的字节数小约 6k。这些文件在 npm 包和 CDN 上也可用

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

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

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

感谢

感谢所有参与此版本发布的人,包括通过提交补丁、报告错误或进行测试的人,包括 fecore1Richard GibsonSimon LegnerMichal Golebiowski-OwczarekVladimir SitnikovTimo TijhofChristian Oliffygj6 以及整个 jQuery 团队。

变更日志

完整变更日志: 3.6.1

CSS

  • addClass( 数组 ) 中跳过假值,压缩代码 (#49989b34bdb1)
  • 证明在 CSS 属性值上使用 rtrim 的合理性 (a1373e2e)
  • 从 curCSS 中的 rtrimCSS 包含中删除多余的扩展名 (509eeb89)
  • 修剪 CSS 自定义属性值周围的空格 (#4926219ccf5c)

已弃用

  • 提高包含大量空格的字符串的 $.trim 性能 (69940100)

文档

  • 更新 README 中的 webpack 网站 (410d5cf0)
  • 添加指向预览新 CLA 的链接 (b24e83bd)
  • trac-NUMBER 替换 #NUMBER Trac 问题引用 (95e34b69)
  • 从旧的 jquery 源代码中删除过期的链接 (c3c4d207)
  • 从源代码中删除指向 Web Archive 的链接 (#49814b0d8900)
  • 更新 CONTRIBUTING.md 中指向最新 jQuery 构建的 URL (4bb7d069)
  • 删除拉取请求模板中的 CLA 复选框 (93406490)

事件

  • .on(focus).off(focus) 之后不要破坏焦点触发 (#4867b3e4a7eb)

操作

测试

  • 根据编译标志(3.x 版本)排除测试,而不是 API 存在 (#5069bc165128)
  • 解决 Firefox 中的 XML 解析错误 (be3bd560)
  • 将 colors 版本锁定到 1.4.0 (fa70e8fd)
  • 在 TestSwarm 上跳过 ETag AJAX 测试 (81fa1e2a)
  • 允许 AJAX 测试中的 statusText 为“success” (7439e221)
  • 在旧版 Safari/iOS 中禁用 CSS 自定义属性测试 (e9f77267)
  • 使 Karma 浏览器超时时间大于 QUnit 超时时间 (a51eec74)
  • 不要删除 mock.php 的 cspClean 操作中的 csp.log (ba81326f)
  • 通过 HTTPS 加载 TestSwarm 监听器 (f6f07204)
  • 将背景图像从在线文件更改为本地 1×1.jpg (8d20cb97)
  • 从 mock.php 中剥离非典型的回调参数字符 (b14b62c8)

基础设施

  • 更新 GitHub Actions (0f6c3d9e)
  • 添加 dependabot.yml 配置 (GitHub Actions) (5a363017)
  • 在 Node 17 上进行测试,更新 Grunt 和 karma-* 包 (9bc0df70)
  • 在 GitHub Actions 中将安装步骤与运行测试步骤分开 (cb35067f)
  • 删除 travis.yml 和核心中的 travis 引用 (#4984) (55669883)
  • 将 CI 迁移到 GitHub Actions (b39cfa15)
  • 在 Node.js 16 而不是 15 上进行测试 (f12cac60)
  • 也从外部目录获取 core-js (752b8981)
  • 正在将 3.x-stable 版本更新至 3.6.1-pre。(3642471e)

评论已关闭。