jQuery 3.5.1 发布:修复了一个回归问题

发布日期: 作者:

我从未在 jQuery 发布中说过这句话,但愿原力与你同在!不久前,在一个与我们完全相同的星系中,我们发布了 jQuery 3.5.0。对于该版本中的一个回归问题,我们有一个快速修复。

具体来说,我们已将内部数据对象更改为使用 Object.create( null ) 而不是普通对象 ({})。我们这样做是为了防止与 Object.prototype 属性上的键发生冲突。但是,这也意味着用户(尤其是插件)不能再使用本机 .hasOwnProperty() 方法检查 jQuery 数据中的内容,并且破坏了一些代码。我们已恢复了该更改,但计划将其放回 jQuery 4.0 中。此更改是此版本中的唯一代码更改。其他更改包括对文档和构建系统的一些小幅更新。

3.5.0 中的安全修复

jQuery 3.5.0 包括针对 jQuery DOM 操作方法(例如 .html().append() 和其他方法)中的两个安全问题的修复。这两个问题的安全公告已在 GitHub 上发布。虽然我们在 jQuery 3.5.0 博客文章中提供了第一个问题的全部详细信息,但我们没有提供第二个问题的全部详细信息,并希望在本文中进行说明。

第二个问题与第一个问题非常相似。这是一个 XSS 漏洞,与将 <option> 元素传递给 jQuery DOM 操作方法有关。本质上,我们使用正则表达式将 <option> 元素包装在 <select> 元素中,以确保这些元素在旧版 IE 中正确解析(IE <= 9 在插入 <select> 元素之外时,会将所有 <option> 标记替换为其内容)。

我们的修复是仅在需要的地方应用此代码。幸运的是,由于 IE9 中的解析行为不同,我们可以将修复程序保留在 IE9 中,而不会使其暴露于与其他浏览器相同的漏洞。请尽快升级以避免这些漏洞。

升级

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

如果您还无法升级到 3.5+,Daniel Ruf 友情提供 先前 jQuery 版本的补丁。请试用此新版本,并 告知我们遇到的任何问题

下载

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

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

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

您也可以从 npm 获取此版本

npm install jquery@3.5.1

精简版本

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

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

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

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

感谢

感谢所有参与此版本的人,包括提交补丁、报告错误或进行测试的人,包括 Pierre GrimaudMichal Golebiowski-OwczarekEd Svanillajonathan 和整个 jQuery 团队。

变更日志

完整的变更日志:3.5.1

构建

  • 在 Node.js 14 上测试,停止在 Node.js 8 和 13 上测试 (205dd134)
  • 在 ESLint 中启用 reportUnusedDisableDirectives (b21d6710)
  • 将 3.x-stable 版本更新为 3.5.1-pre。(898784ab)

数据

文档

  • 修复错别字 (ea3766c0)
  • 更新指向 jsdom 存储库的链接 (f7fed7ee)
  • 在 README 中使用 https 进行超链接 (763dd3fe)

测试

  • 解决 iOS 8-12 中最近 XSS 测试中的故障 (ea2d0d50)
  • 为最近修复的操作 XSS 问题添加测试 (58a8e879)
  • 在新的事件测试中清理 windowdocument 处理程序 (c1c0598d)
  • 修复“jQuery.ajax() - JSONP - 同域”测试中的不稳定性 (46ba70c5)

jQuery 3.5.0 发布!

发布日期: 作者:

jQuery 3.5.0 已发布!与往常一样,此版本可在 我们的 cdn 和 npm 包管理器上获得。其他第三方 CDN 也许很快就会提供此版本,但请记住,我们不控制其发布时间表,它们需要一些时间。

希望您在许多人被困在家中时保持健康和安全。随着一种病毒肆虐全球,我们意识到 jQuery 对于您或您管理的网站可能不是首要任务。当您有时间时,我们建议您查看此新版本并进行升级。

安全修复

此版本中的主要更改是安全修复,您可能需要更改自己的代码以进行调整。原因如下:jQuery 在其 jQuery.htmlPrefilter 方法中使用正则表达式来确保所有结束标记在传递给方法时符合 XHTML 规范。例如,此预过滤器确保类似 jQuery("<div class='hot' />") 的调用实际上转换为 jQuery("<div class='hot'></div>")。最近,有人报告了一个问题,该问题表明正则表达式可能会引入跨站点脚本 (XSS) 漏洞。

jQuery <=3.4.1 中的 HTML 解析器通常会执行正确操作,但存在解析会产生意外后果的极端情况。jQuery 团队一致认为,有必要在次要版本中修复此问题,即使某些代码依赖于以前的行为并且可能会中断。jQuery.htmlPrefilter 函数在 3.5.0 中不使用正则表达式,而是直接通过未经修改的字符串。

如果您绝对需要旧行为,则使用最新版本的 jQuery migrate 插件 提供一个函数来恢复旧的 jQuery.htmlPrefilter。在包含插件后,您可以调用 jQuery.UNSAFE_restoreLegacyHtmlPrefilter(),jQuery 将再次确保 XHTML 规范的结束标记。

但是,为了正确地对用户输入进行清理,我们还建议使用 dompurifySAFE_FOR_JQUERY 选项来清理来自用户的 HTML。如果您不需要旧行为,但仍然希望清理来自用户的 HTML,则从 jQuery 3.5.0 开始,应不使用SAFE_FOR_JQUERY 选项来使用 dompurify。有关更多详细信息,请参阅 3.5 升级指南

功能

我们所谓的“位置选择器”即将被弃用,并 计划在 jQuery 4.0 中删除,因此我们添加了最后两个必要的替换方法。具体来说,我们添加了 .even().odd() 方法来替换 :even:odd 选择器。有了这些方法,我们可以在 jQuery 4.0 中安全地删除这些过于复杂的选择器。

我们添加到此版本中的另一个小功能是能够向 jQuery.globalEval 添加上下文。这是在修复 iframe 中脚本执行的错误 时完成的。

修复

值得注意的一个错误是 我们在 Ajax 脚本传输中修复的一个错误。jQuery 以前将对脚本请求的任何响应都评估为脚本,但这并不总是期望的行为。这与其他数据类型不同,在其他数据类型中,这种约定是可以的(例如,在 JSON 的情况下)。jQuery 3.5.0 现在只评估成功的 HTTP 响应。

其他错误修复和改进包括 性能 改进 Sizzle、支持 jQuery.map 中的大型数组、在支持的情况下使用本机 .flat() 方法修复 AMD 模块中的语法错误、对测试基础设施的若干改进等等。您可以在下面找到完整的变更日志。

弃用

没有一些弃用,jQuery 版本将不完整。在 jQuery 3.5.0 中,我们将 jQuery.trim 添加到列表中。JavaScript 自己的 String.prototype.trim() 是它的一个简单的替代品。

我们还将 AJAX 事件别名 添加到列表中,它们可以使用 .on("ajaxStart", …) 等替换。jQuery Migrate 现在将警告这些已弃用的方法,但它们将保留到 jQuery 4.0。

升级

除了不再为您确保 XHTML 兼容标签之外,我们预计从 jQuery 3.0+ 版本升级时不会出现其他兼容性问题。要升级,请查看新的 3.5 升级指南。如果您尚未升级到 jQuery 3+,请先查看 3.0 升级指南

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

如果您还不能升级到 3.5+,Daniel Ruf 已经为以前的 jQuery 版本提供了 补丁

下载

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

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

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

您也可以从 npm 获取此版本

npm install jquery@3.5.0

精简版本

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

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

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

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

感谢

感谢所有参与此版本发布的人,包括提交补丁、报告错误或测试的人,包括 Ahmed S. El-AfifiMichal Golebiowski-OwczarekWonseop KimDave MethvinShashanka NatarajPat O’CallaghanSean RobinsonChristian OliffChristian Wenz 和整个 jQuery 团队。

我们还要感谢 Masato Kinugawa 帮助我们识别并修复此版本中的安全相关问题。

变更日志

完整变更日志: 3.5.0

Ajax

  • 不要对不成功的 HTTP 响应执行脚本 (#4250#4655da3dd85b)
  • 如果存在,用 content-type 标头值覆盖 s.contentType (#4119065143c2)
  • 弃用 AJAX 事件别名,将内联事件/别名弃用 (7a3cf9c0)

构建

  • 解决 Travis 配置警告 (7506c9ca)
  • 在浏览器代码中为 var 声明启用 ESLint one-var 规则 (0fdfdd82)
  • 在 Travis 上测试无 Sizzle 构建 (362075ae)
  • 更新 .mailmap 和 AUTHORS.txt (19f2dcba)
  • 测试:修复自定义构建测试,在 Travis 上验证;命名 Travis 作业 (d525ae34)
  • 也对压缩后的 jQuery 文件进行 lint (#307537df5cdf)
  • 使 Karma 在 AMD 模式下工作 (46c284b1)
  • 为 Slim 构建创建一个 grunt custom:slim 别名 (4cbdc745)
  • 仅在配置中定义的浏览器上运行 Travis 上的测试 (471b0043)
  • 在 Firefox ESR 上也运行测试 (0a73b94a)
  • 除了 8、10 和 12 之外,在 Node.js 13 上也运行测试 (64c1fcc1)
  • 删除 Gruntfile.js 中针对 Node.js 6 的解决方法 (9f4204ec)
  • 在 Travis 上的 FirefoxHeadless 上也运行测试 (ad3c2efa)
  • 通过 ESLint 在 Node.js 脚本中强制使用严格模式 (ac2da4e6)
  • 支持 jquery-release –dry-run 标志 (c7a5e1bd)
  • 在发布时停止将 src/core.js 复制到 dist (#4489279d2e97)
  • ESLint:禁止未使用的函数参数 (d7e13f12)
  • 修复正则表达式解析 AMD var-modules (#4389) (36b59c96)

核心

  • Ajax:与 master 对齐 nonce 和全局,修复 AMD 问题 (22bf701f)
  • 在 iframe 上下文中触发 iframe 脚本,在 globalEval 中添加 doc 参数 (#45183dedc3f2)
  • 弃用 jQuery.trim (#436356e73e0c)
  • 在支持的情况下使用 Array.prototype.flat (#43202f666c1d)
  • 实现 .even() 和 .odd() 以替换 POS :even 和 :odd (409cbda7)

CSS

  • 在 IE/Edge 中解决表格行中错误的 getComputedStyle (#44906d31477a)

数据

  • 事件:操作:防止与 Object.prototype 冲突 (#3256413ff796)

文档

  • 更新指向 EdgeHTML 问题的链接,通过 Web Archive 访问 (d72faced)
  • 将指向 Homebrew 的链接从 HTTP 转换为 HTTPS (ff5a43eb)

效果

事件

  • 每个匹配的窗口和文档仅使用一个 focusin/out 处理程序 (#46529e15d6b4)
  • 仅将事件附加到接受数据的对象 - 真的 (#4397f36f6abb)

操作

  • 跳过选项元素的选择包装器
  • 使 jQuery.htmlPrefilter 成为一个标识函数 (1d61fd94)

偏移

  • 将带 px 的字符串发送到 .css() (57038fae)

选择器

测试

  • 在 IE 中将一个 focusin 测试列入黑名单 (1a4f10dd)
  • 将必要数量的 done() 调用传递给 assert.async() (5ea844f6)
  • 使支持测试在 Firefox 4x/5x/60 上通过 (f0d5ec62)
  • 在 Firefox 中跳过“带有幻影边框的表格行的宽度/高度”测试 (c79e1d5f)
  • 不要在 Chrome 中卸载时测试同步 XHR (c5b48c8c)
  • 修复 Chrome for Android 中的偏移分数测试 (0c67da4b)
  • 将 Android 用户代理检测移到 iOS 之上,将 Safari 放在最后 (6276cb2e)
  • 使支持测试接受 Safari 13 及更高版本 (8167327f)
  • 更新 npo.js 并包含非压缩源代码 (3654bc83)

遍历

  • 修复对象元素上的 contents()s with children in IE (90f78b9a)
  • 修复具有子元素的对象元素上的 contents() (#438442badf34)

jQuery 3.4.1:在 IE 中触发焦点事件,并在 iOS 10 中查找根元素

发布时间: 作者:

再次问好!jQuery 3.4.0 已经 发布了三个星期,但我们收到了一些需要补丁版本修复的问题报告。感谢所有报告问题并帮助我们快速解决问题的人。以下列出了更改

在 IE 中多次触发焦点或模糊

jQuery 3.4.0 对事件处理程序触发本机事件(如 focusblur)的方式进行了一些更改。这些更改导致回归,有时会导致抛出神秘错误,错误形式为 "saved.shift is not a function"。现在已修复。

示例

// Error thrown in IE10-11
// after clicking #test-element twice
jQuery("#test-element").click(function() {
  jQuery(this).trigger("blur");
});

在 iOS 10.0-10.2 中检查元素附件

发布 3.4.0 时,我们在 iOS 的多个版本中运行了测试,包括 iOS 10.3,但不包括 10.0-10.2。这些版本不支持我们用来确定元素是否附加到 DOM 的本机函数。其他版本的 iOS 未受影响。我们添加了一个保护措施,以确保此方法存在,并在必要时回退到其他选项。

使用 AMD 加载 jQuery

在 jQuery 3.4.0 中添加了一个小型模块,该模块使用全局 jQuery 而不是使用 AMD 加载的本地 jQuery。这会导致在使用 AMD 加载时出现 "jQuery is undefined" 错误,但现在应该已修复。

 


升级

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

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

下载

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

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

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

您也可以从 npm 获取此版本

npm install jquery@3.4.1

精简版本

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

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

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

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

感谢

感谢所有参与此版本发布的人,包括提交补丁、报告错误或测试的人,包括 Richard GibsonMichal Golebiowski-Owczarek 和整个 jQuery 团队。

变更日志

GitHub 变更日志: 3.4.1 中修复的问题 | 所有更改

构建

  • 修复 finalPropName 中未解析的 jQuery 引用 (#43580d4af529)

核心

事件

  • 防止 leverageNative 注册重复的虚拟处理程序 (6c1e7dbf)
  • 修复对多个异步焦点事件的处理 (#435024d71ac7)

jQuery 3.4.0 已发布

发布时间: 作者:

jQuery 发布了新版本!距离上次发布已经有一段时间了,但我们预计这将是 3.x 分支的最后一个次要版本,之后我们将进入大版本更新,即 jQuery 4.0。但在我们进入 4.0 之前,我们很高兴分享 jQuery 3.4.0 中包含的错误修复和改进。以下是一些亮点

.width.height 的性能改进

在获取和设置尺寸时,某些情况下可能会导致布局抖动,这意味着浏览器计算布局的次数比必要的次数更多。我们修复了除 IE 之外的所有浏览器中的这个问题,因为在 IE 中无法避免这个问题。

noncenomodule 支持

为了支持通过 .html 和 .append 等方法添加脚本元素,jQuery 将它们分离,并将新的脚本标签附加到加载和执行远程内容。在此过程中,noncenomodule 等属性被忽略,但 jQuery 3.4.0 现在会保留它们。

单选按钮:事件处理程序中的预期状态

我们已经修复了复选框中相同的问题,但意外地遗漏了单选按钮输入。在以下示例中,true 在元素第一次被点击时被记录。我们修复了它,以便在执行事件处理程序之前更新 checked 属性。

示例

var $radios = jQuery(".example");
var $firstRadio = $radios.first();
var firstCheckedState = $firstRadio.prop("checked");
$radio.on("click", function() {
  // true in <3.4.0
  console.log($firstRadio.prop("checked") === firstCheckedState);
});
$radios.eq(1).click();

小漏洞修复:Object.prototype 污染

jQuery 3.4.0 包含了使用 jQuery.extend(true, {}, ...) 时的一些意外行为的修复。如果未经清理的源对象包含可枚举的 __proto__ 属性,它可能会扩展本机 Object.prototype。此修复已包含在 jQuery 3.4.0 中,但存在 补丁差异 来修补以前的 jQuery 版本。

示例

jQuery.extend(true, {},
  JSON.parse('{"__proto__": {"test": true}}')
);
console.log( "test" in {} ); // true

请注意,虽然 jQuery 尽力保护用户免受安全漏洞的影响,但 jQuery 是一个 DOM 操作库,它通常会按照你的指示执行操作。在这种情况下,行为可能是意料之外的,因此 jQuery.extend 将不再写入任何名为 __proto__ 的属性。但是,这种保护措施不能代替良好的安全实践,例如用户输入清理。

弃用位置选择器和 Sizzle 的淘汰

jQuery 的基本 API 是选择某些东西,然后对选中的东西执行某些操作。Sizzle,jQuery 中的选择器引擎,处理前半部分。它一直是一个快速高效的小型引擎,为像 querySelectorAll 这样的原生选择器 API 以及其他原生 JavaScript 和 CSS 选择器铺平了道路。现在,由于这些选择器中的许多已经进入了现代浏览器,我们差不多要向 Sizzle 说再见了。但是,为了在 jQuery 4.0 中删除 Sizzle,我们还需要删除我们称为位置选择器的非标准选择器。

具体来说,jQuery 3.4.0 正在弃用 :first:last:eq:even:odd:lt:gt:nth。当我们删除 Sizzle 时,我们将用一个围绕 querySelectorAll 的小型包装器来代替它,并且几乎不可能在没有更大的选择器引擎的情况下重新实现这些选择器。

我们认为这种权衡是值得的。请记住,我们仍然支持位置方法,例如 .first.last.eq。你可以使用位置方法来完成使用位置选择器所能做的一切。它们的表现也更好。

升级

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

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

下载

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

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

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

您也可以从 npm 获取此版本

npm install jquery@3.4.0

精简版本

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

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

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

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

感谢

感谢所有参与此版本发布的人,包括提交补丁、报告错误或进行测试的人,包括 abnud1Jason Bedardbuddh4Kris BorchersAndrei FangliOleg GaidarenkoRichard GibsonMichal Golebiowski-OwczarekMarja HölttäDave MethvinEd SLuis Emilio Velasco SanchezSaptak Senguptatmybr11Bert Zhang 以及整个 jQuery 团队。

变更日志

GitHub 变更日志: 3.4.0 中修复的问题 | 所有更改

Ajax

核心

  • 使用 isAttached 检查元素的附加状态 (662083ed)
  • 对 jQuery.extend / jQuery.fn.extend 的微小效率修复 (#4246) (#42454ffb1df8)
  • 在 DOM 操作中,保留具有 src 属性的脚本的 CSP nonce (#432300504037)
  • 在 DOM 操作中保留脚本的 CSP nonce (#3541c7c2855e)
  • 支持通过 jQuery.globalEval 传递 nonce (#42785bdc85b8)
  • 在附加检查中识别 Shadow DOM (#35049b77def5)
  • 防止 $.extend( true, … ) 的 Object.prototype 污染 (753d591a)

CSS

  • 确保 CSS 变量的驼峰式和短横线式名称不会被折叠 (f8c1e902)
  • 避免填充 jQuery.cssProps (#39862b5f5d5e)
  • 使用非默认缩放正确检测滚动框支持 (#4029821bf343)
  • 不要自动在 CSS 变量后面添加 “px” (#4064) (#406375b77b48)
  • 跳过非元素属性动画的 px 附加逻辑 (f5e36bd8)
  • 除非必要,否则避免在宽度/高度获取器中强制重绘 (#4322a0abd15b)
  • 除非必要,否则不要在宽度/高度 cssHook 中读取 styles.position (#4185354f6036)
  • 不要自动在可能无单位的 CSS 网格属性后面添加 “px” (#4007f997241f)

尺寸

  • 修复计算 SVG 的 outerWidth (#3964e743cbd2)
  • 避免在设置宽度/高度时获取 boxSizing - 这在某些情况下可以避免强制重绘 (#399173d7e625)
  • 在 IE 中,对边框盒回退到 offsetWidth/Height (#4102315199c1)

事件

操作

  • 正确检测具有单字符名称的 HTML 元素 (#4124979809c5)

杂项

  • 为 lockbot 添加配置 (2348f399)
  • 更新许可证序言/尾注,以安抚 Github 检查器 (29e76e25)

自述文件

  • 将 gitter 徽章添加到 README.md (7869f83d)
  • 添加 FOSSA 许可证扫描状态徽章 (45f08588)

选择器

序列化

  • jQuery.param:当给出 null/undefined 时返回空字符串 (#26330645099e)

遍历

内部

  • 对 uglify 及其选项进行季节性更新 (09684ba3)
  • 删除不必要的 ESLint 异常 (dc05f3c1)
  • 在 jsdom 中运行基本测试套件 (0ec25abb)
  • 删除手动 QUnit 固定装置重置 (84b6a0be)
  • 使 Promises/A+ 测试使用点式报告器而不是默认报告器 (ca9356ec)
  • 将 QUnit 从 1.23.1 更新到 2.9.2 (6ced2639)
  • 在 Node.js 10 而不是 8 上运行 Karma 浏览器测试 (16ad9889)
  • 更新 jsdom;将使用 Symbol 多态性的测试迁移到 iframe 测试 (9cb124ed)
  • 从 ESLint 配置中删除过时的全局变量 (c10945d0)
  • 更新大多数依赖项 (8751e9ef)
  • 更新测试代码,使其与 QUnit 2.x 兼容 (#4297) (c3498187)
  • 建议在 JS Bin 或 CodePen 上创建测试用例,放弃 JSFiddle (da44ff39)

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 字节——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://jqueryjs.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 字节——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://jqueryjs.cn/download/。公共 CDN 会在今天收到其副本,请给他们几天时间发布文件。如果您迫切需要快速入门,请使用我们 CDN 上的文件,直到他们有机会更新。

感谢

感谢所有参与本版本发布的人员,包括通过提交补丁、报告错误或进行测试的人员,包括 Andreas Solledar、Basil Belokon、Boom Lee“CDAGaming”Dave MethvinErik LaxHenry ZhuJason BedardJordan BelandMatan Kotler-BerkowitzMichał Gołębiowski-OwczarekNilton CesarPierre SpringRichard GibsonSaptak SenguptaShashanka NatarajSteve MaoTimo TijhofFaisal Irfan Yar Khan 以及整个 jQuery 团队。

 

变更日志

GitHub 变更日志: 3.3.0 中修复的问题 | 所有更改

Ajax

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

属性

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

构建

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

核心

CSS

  • 从 cssProps 中删除浮动映射 (bbf33428)
  • 使用非默认缩放正确设置支持属性 (#3808f00a0759)
  • 检测并考虑错误报告为百分比的更多 WebKit 样式 (#377794ddf620)
  • 在计算之前检索内联样式 (c4598da4)
  • 避免 CSS 上限对单位转换的干扰 (#2144692f9d4d)

延迟

尺寸

文档

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

事件

  • 将事件别名移至弃用部分 (#3214022b69a4)
  • 在本地事件处理程序上使用 `stopPropagation()` (#3693490db839)

筛选

操作

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

偏移

支持

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 位于正确的位置 (#3573fcc9a9ec)

尺寸

  • 确保我们获得对显示为“inline”的元素的宽度和高度的正确值 (#3571473d2ea7)

事件

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

GitHub 变更日志: 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 和类操作的组合来完成所有 Web 动画会更简单。除了包含 ajax 和 effects 模块的 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://jqueryjs.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 和类操作的组合来完成所有 Web 动画会更简单。除了包含 ajax 和 effects 模块的 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://jqueryjs.cn/download/。公共 CDN 会在今天收到其副本,请给他们几天时间发布文件。如果您迫切需要快速入门,请使用我们 CDN 上的文件,直到他们有机会更新。

感谢

非常感谢所有通过测试、报告错误或提交补丁参与此版本发布的您,包括 Connor AthertonJason BedardDavid Broder-RodgersOleg GaidarenkoMichał GołębiowskiRichard Gibsonkaran-96Manoj KumarAlexander LisianoiAlex LoudenAlex Padilla 以及整个 jQuery 团队。

GitHub 变更日志: 3.2.0 中修复的错误 | 所有更改

完整变更日志

回调

核心

CSS

延迟

尺寸

文档

  • 从 ISSUE_TEMPLATE.md 中删除支持的 jQuery 版本 (fedc1aa6)
  • 更正问题模板中的错别字 (a8816caf)

效果

事件

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

操作

偏移

测试

  • 在不支持的浏览器中跳过 CSS 自定义属性测试 (bcec54ee)
  • 更新加载程序,以便测试页面始终获得 jQuery (14b393d0)
  • 添加了对符号分隔的标签名称的测试 (#2006bd9145fa)
  • 清理 CSS 自定义属性支持测试后的操作 (fc34dbc2)

遍历

构建

  • 在 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)
  • 在精简版中保留弃用的模块 (#32370588d0ce)

jQuery 3.1.1 发布!

发布日期: 作者:

jQuery 3.1.1 现已发布!

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

我们修复了 禁用选项的选择器问题即使使用 AMD 加载 jQuery,也公开了 jQuery.noConflict,以及 修复了与空格相关的一些问题。我们还修复了 地图文件中的一个问题,这将在调试期间使用 CDN 副本时有所帮助。

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

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

GitHub 变更日志: 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 和类操作的组合来完成所有 Web 动画会更简单。除了包含 ajax 和 effects 模块的 jQuery 常规版本之外,我们还发布了一个“精简”版本,其中排除了这些模块。总而言之,它排除了 ajax、effects 和当前弃用的代码。如今,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://jqueryjs.cn/download/。公共 CDN 会在今天收到其副本,请给他们几天时间发布文件。如果您迫切需要快速入门,请使用我们 CDN 上的文件,直到他们有机会更新。

感谢

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

jQuery 3.1.0 发布——不再出现静默错误

发布日期: 作者:

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

不幸的是,如果您正在使用通常的方法来附加就绪处理程序(例如 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 变更日志

下载

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

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

精简版本

有时您不需要 ajax,或者您更喜欢使用专注于 ajax 请求的众多独立库之一。而且通常,使用 CSS 和类操作的组合来完成所有 Web 动画会更简单。除了包含 ajax 和 effects 模块的 jQuery 常规版本之外,我们还发布了一个“精简”版本,其中排除了这些模块。总而言之,它排除了 ajax、effects 和当前弃用的代码。如今,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://jqueryjs.cn/download/。公共 CDN 会在今天收到其副本,请给他们几天时间发布文件。如果您迫切需要快速入门,请使用我们 CDN 上的文件,直到他们有机会更新。

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