jQuery 3.6.1 已发布!自从上次发布以来已经有一段时间了。我们一直在尝试修复一些与焦点和模糊相关的难以捉摸的边缘情况,但始终无法正确修复。如果 jQuery 中有哪个领域很难更改,那很可能与焦点有关。我们现在将这些问题保持原样,并在未来解决,特别是由于这些更改最终可能需要一个主要版本发布。请参阅 gh-4856 和 gh-4950 以获取更多详细信息。
尽管如此,此版本仍然包含一些重要的修复,详情如下。
像往常一样,该版本可在 我们的 cdn 和 npm 包管理器上获得。其他第三方 CDN 可能也会很快提供,但请记住,我们无法控制他们的发布计划,他们需要一些时间。以下是 jQuery 3.6.1 的亮点
基础设施改进
在这个版本中,我们进行了很多工作来更新一些测试和构建基础设施,包括从 Travis CI 迁移到 GitHub Actions,在 Node 16 而不是 Node 15 上进行测试,通过 https 加载我们的测试监听器,并添加更准确的自定义构建测试。我们还删除了存储库中某些文件注释中的一些旧链接。这些链接指向已被攻破的 URL。虽然这些文件从未在发布版中分发,但它们仍然存在于 GitHub 源代码中,并且已被删除。
不丢失焦点
此版本仍然包含 一个与焦点相关的修复。我们的焦点事件处理程序即使在删除 jQuery 焦点处理程序后仍然保持附加状态,从而破坏了任何后续的手动焦点触发。例如,
$elem
.on("focus", function() {})
.off("focus")
.trigger("focus");
将不会触发焦点。
跳过 addClass( array ) 中的假值
在不增加任何大小的情况下,我们 添加了支持,以跳过传递给 addClass 或 removeClass 的数组中的任何假值。
这使得像
elem.addClass( [ "a", "", "b" ] );
这样的代码可以同时添加 a 和 b 类。
与自定义 CSS 属性值的规范对齐
CSS 规范的 一项更改 要求自定义属性必须进行修剪。现在,自定义 CSS 属性值中的空格将被 修剪。 以前,像 --prop: value ; 这样的内容会保留值中的前导和尾随空格,返回 ” value “。
附加带有 HTML 注释的脚本
发现我们的正则表达式存在一个问题,该问题是在附加脚本时从脚本中删除 HTML 注释,最终在某些边缘情况下删除了可执行脚本的一部分。幸运的是,我们的修复是 更多地依赖浏览器,但我们仍然需要在 3.x 分支中删除 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://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。
感谢
感谢所有参与此版本发布的人员,包括提交补丁、报告错误或进行测试的人员,包括 fecore1、Richard Gibson、Simon Legner、Michal Golebiowski-Owczarek、Vladimir Sitnikov、Timo Tijhof、Christian Oliff、ygj6 和整个 jQuery 团队。
变更日志
完整变更日志:3.6.1
CSS
- 跳过 `addClass( array )` 中的假值,压缩代码 (#4998, 9b34bdb1)
- 证明在 CSS 属性值上使用 rtrim 的合理性 (a1373e2e)
- 删除 curCSS 中 rtrimCSS 包含的冗余扩展 (509eeb89)
- 修剪 CSS 自定义属性值的周围空格 (#4926, 219ccf5c)
已弃用
- 提高包含大量空格的字符串的 `$.trim` 性能 (69940100)
文档
- 更新 README 中的 webpack 网站 (410d5cf0)
- 添加指向预览新 CLA 的链接 (b24e83bd)
- 将 `#NUMBER` Trac 问题引用替换为 `trac-NUMBER` (95e34b69)
- 删除旧 jQuery 源代码中的过期链接 (c3c4d207)
- 删除来自 Web Archive 的链接 (#4981, 4b0d8900)
- 更新 CONTRIBUTING.md 中最新的 jQuery 构建的 URL (4bb7d069)
- 删除拉取请求模板中的 CLA 复选框 (93406490)
事件
操作
Tests
- 根据编译标志而不是 API 存在排除测试 (3.x 版本) (#5069, bc165128)
- 解决 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)