jQuery 3.6.0 发布!

发布日期 作者

jQuery 3.6.0 已发布! 在 jQuery 3.5.0 中,主要变化是对 html 预处理器的安全修复。此版本不包含安全修复,但包含一些错误修复和改进。我们仍在关注 jQuery 4.0 的发布,但在那之前,我们将继续支持 3.x 分支并解决重要问题。

像往常一样,此版本可在 我们的 cdn 和 npm 包管理器上获得。其他第三方 CDN 可能很快也会提供它,但请记住,我们不控制它们的发布计划,它们需要一些时间。以下列出了 jQuery 3.6.0 的亮点

即使对于 JSONP 错误也返回 JSON

您可能从次要版本号中猜到,此版本中潜入了新功能。在以前的版本中,当 JSONP 请求响应时出现错误,通常响应仍然是可执行脚本。我们已更改默认行为,以尝试在这种情况下执行响应。遇到错误时,仍然会跳过正常脚本。有关更多信息,请参阅 gh-4771

修复

值得注意的一个错误与 在焦点处理程序中将焦点重定向到另一个元素 相关。以以下示例为例,其中在另一个焦点处理程序中触发焦点处理程序

elem1.on( "focus", function() {
  elem2.trigger( "focus" );
} );

由于它们在除 IE 之外的所有地方都是同步的,因此在 3.4.0 中添加的一个修复程序利用了本机事件,导致本机 .focus() 方法最后为初始元素调用,从而使其夺回焦点。虽然代码继续利用本机焦点和模糊事件,但我们能够通过与本机方法更一致并仅将最后一个焦点事件向上传播到 DOM 树来解决此问题。

其他错误修复和改进包括修复 在 Firefox 中检索表格行尺寸 的错误,修复 在 Chrome 中,当焦点消失事件触发在已删除的元素上时发生的崩溃,对一些测试的几个改进等等。您将在下面找到完整的变更日志。

升级

除了不再为您确保 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.6.0.js

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

您也可以从 npm 获取此版本

npm install jquery@3.6.0

精简版本

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

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

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

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

感谢

感谢所有参与此版本的人,包括提交补丁、报告错误或测试的人,包括 Dallas FraserMichal Golebiowski-OwczarekWonseop KimWonhyoung ParkBeatriz RezenerNatalia Sroka 以及整个 jQuery 团队。

变更日志

完整变更日志:3.6.0

Ajax

核心

Deferred

  • 将 master 重命名为 primary (15b62a2e)

尺寸

  • 修改可靠的 TrDimensions 支持测试以考虑 FF (#4529bcd40aa7)

文档

  • 将 JS 基金会提及更改为 OpenJS 基金会 (db43ef0b)

事件

选择器

支持

  • 确保支持 div 的 display 设置为 block (#4844) (#4832f8bdb127)

测试

  • 修复不自动执行没有 dataType 的脚本的测试 (7298e04f)
  • 在旧版 Edge 中跳过 jQuery.parseXML 错误报告测试 (bf06dd47)
  • 修复 jQuery.parseXML 错误报告测试 (1ec36332)
  • 在 Node.js 模拟服务器中识别具有点的回调 (4c572a7f)
  • 在 Safari 中跳过“在卸载时 jQuery.ajax()”测试 (4f016c64)
  • 删除未使用的局部变量 (beea433d)
  • 删除剩余的过时的 jQuery.cache 引用 (5e028c76)
  • 删除过时的 jQuery 数据测试 (8ad78cdb)

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 压缩字节。这些文件也在 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)
  • 在新的事件测试中清理 `window` 和 `document` 处理程序 (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 开始,应使用 dompurify 不带 SAFE_FOR_JQUERY 选项。有关更多详细信息,请参见 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 压缩字节。这些文件也在 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)
  • 如果存在任何内容类型标头值,则用内容类型标头值覆盖 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:将 nonce 和 global 与 master 对齐,修复 AMD 问题 (22bf701f)
  • 在其上下文中触发 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 存档 (d72faced)
  • 将 Homebrew 链接从 HTTP 转换为 HTTPS (ff5a43eb)

影响

事件

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

操作

  • 跳过 option 元素的 select 包装器
  • 使 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)

遍历

  • 修复 object 元素上的 contents()s with children in IE (90f78b9a)
  • 修复带有子元素的 object 元素上的 contents() (#4384, 42badf34)

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

发布日期 作者

再次问好!jQuery 3.4.0 于 三周前发布,但我们收到了一些需要补丁版本才能解决的问题报告。感谢所有报告问题并帮助我们快速解决这些问题的人。以下列出了更改内容

在 IE 中多次触发 focus 或 blur

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 压缩字节。这些文件也在 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 引用 (#4358, 0d4af529)

核心

事件

  • 防止 leverageNative 注册重复的虚拟处理程序 (6c1e7dbf)
  • 修复多个异步 focus 事件的处理 (#4350, 24d71ac7)

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 压缩字节。这些文件也在 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) (#4245, 4ffb1df8)
  • 在 DOM 操作中保留具有 src 属性的脚本的 CSP nonce (#4323, 00504037)
  • 在 DOM 操作中保留 CSP nonce 属性 (#3541, c7c2855e)
  • 支持通过 jQuery.globalEval 传递 nonce 属性 (#4278, 5bdc85b8)
  • 在附加检查中识别 Shadow DOM (#3504, 9b77def5)
  • 防止 Object.prototype 污染 $.extend( true, … ) (753d591a)

CSS

  • 确保 CSS 变量中驼峰式命名和连字符命名不会被合并 (f8c1e902)
  • 避免填充 jQuery.cssProps (#3986, 2b5f5d5e)
  • 在非默认缩放情况下正确检测滚动框支持 (#4029, 821bf343)
  • 不要为 CSS 变量自动追加 "px" (#4064) (#4063, 75b77b48)
  • 跳过非元素属性动画的 px 追加逻辑 (f5e36bd8)
  • 除非必要,否则避免在宽度/高度获取器中强制回流 (#4322, a0abd15b)
  • 除非必要,否则不要在宽度/高度 cssHook 中读取 styles.position (#4185, 354f6036)
  • 不要为可能无单位的 CSS 网格属性自动追加 "px" (#4007, f997241f)

尺寸

  • 修复计算 SVG 的 outerWidth (#3964, e743cbd2)
  • 在设置宽度/高度时避免获取 boxSizing,这在某些情况下可以避免强制回流 (#3991, 73d7e625)
  • 在 IE 中回退到 offsetWidth/Height 以使用 border-box (#4102, 315199c1)

事件

操作

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

其他

  • 添加 lockbot 配置 (2348f399)
  • 更新许可证开头和结尾以安抚 Github 检查器 (29e76e25)

README

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

选择器

序列化

  • jQuery.param:在给定 null/undefined 时返回空字符串 (#2633, 0645099e)

遍历

内部

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

jQuery CDN 中 jQuery 1.9.1 的错误映射文件

发布日期: 作者:

很久以前,Mike Taylor 指出,jQuery CDN 拥有一个压缩版本的 jQuery 1.9.1,其中包含一个错误的映射文件引用。它实际上引用了 jQuery 1.11.1 的映射文件,这显然是错误的。如果你正在尝试调试使用压缩版 jQuery 1.9.1 文件的网站,开发工具会感到非常困惑,使本来就很困难的工作变得更加困难。

你可能会认为我们可以直接编辑 https://code.jqueryjs.cn/jquery-1.9.1.min.js 文件,使其指向正确的映射文件,这个文件的确存在,名为 https://code.jqueryjs.cn/jquery-1.9.1.min.map。这样做至少存在两个问题。第一个问题是,该文件在互联网上被大量缓存,因为多年来人们一直认为它在发布后永远不会改变。即使我们编辑了该文件,JavaScript 和映射文件也可能在使用时不会真正更新。

第二个问题更为严重。我们一直提倡开发者使用 脚本的 integrity 属性 来确保你包含的文件自你最初编写脚本标签以来没有被修改。如果我们修改了文件的内容,这个属性就会出错,页面将不再包含该文件。这很可能会完全破坏页面!考虑到 jQuery 1.9.1 的年代,包含该文件的许多页面可能都没有得到积极维护。因此,我们无法认真考虑以任何方式更改 JavaScript 文件,即使是更改一个字节也不行。

最不具破坏性的选择是删除 jQuery 1.9.1 压缩文件引用的 jquery.min.map 文件。它不会影响 jQuery 是否能为网站的访问者正常运行。它只会禁用源映射。由于在 CDN JavaScript 文件中包含 sourceMappingURL 映射引用存在这些陷阱,而且这些文件经常被复制到其他地方,因此我们不再包含它。

如果你需要调试使用这些压缩文件的网站,可以在 Chrome 中手动关联一个映射文件。打开压缩的源文件,右键单击压缩源的区域,然后选择“添加源映射...”。

错误的 jquery.min.map 文件已从 jQuery CDN 中删除。我们预计删除该文件不会有任何明显的变化,除了恢复使用 jQuery 1.9.1 的网站调试的理智之外。jQuery 1.11.1 压缩文件没有引用它的映射文件,因此它将继续正常工作,你可以像上面提到的那样关联映射文件。

由于 CDN 和整个互联网上的缓存非常激进,因此你可能在一段时间内还会看到这个映射文件。如果你看到了一些你认为与缺少的 jquery.min.map 文件相关的异常行为,你可以 在 CDN 问题跟踪器上打开一个工单.

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 和类操作的组合来完成所有网页动画更简单。除了包含 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 测试 成为可能。这是我们一直想要的东西,但它被我们对运行 ajax 测试需要 php 服务器的需求所复杂化。感谢 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 和类操作的组合来完成所有网页动画更简单。除了包含 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 处理程序 (#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)
  • 使用非默认缩放比例正确设置支持属性 (#3808, f00a0759)
  • 检测更多错误报告为百分比的 WebKit 样式 (#3777, 94ddf620)
  • 在计算之前检索内联样式 (c4598da4)
  • 避免来自 CSS 上限的单位转换干扰 (#2144, 692f9d4d)

Deferred

尺寸

文档

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

事件

过滤

操作

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

偏移量

支持

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)

尺寸

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

事件

  • 确保触发数据传递到单选按钮单击事件处理程序 (#3579, a6b07052)
  • 恢复:以相同的方式触发复选框和单选按钮单击事件 (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 和效果模块的 jQuery 常规版本,我们还发布了一个“精简”版本,它排除了这些模块。如今,jQuery 的大小很少是加载性能问题,但精简版本比常规版本压缩后的 gzip 大小约小 6k 字节——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 和效果模块的 jQuery 常规版本,我们还发布了一个“精简”版本,它排除了这些模块。如今,jQuery 的大小很少是加载性能问题,但精简版本比常规版本压缩后的 gzip 大小约小 6k 字节——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 中修复的 issue | 所有更改

完整变更日志

回调

核心

CSS

Deferred

尺寸

文档

  • 从 ISSUE_TEMPLATE.md 中移除支持的 jQuery 版本 (fedc1aa6)
  • 修正 issue 模板中的拼写错误 (a8816caf)

效果

事件

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

操作

偏移量

测试

  • 在不支持的浏览器中跳过 CSS 自定义属性测试 (bcec54ee)
  • 更新加载器,以便测试页面始终获取 jQuery (14b393d0)
  • 添加了对符号分隔标签名的测试 (#2006, bd9145fa)
  • 清理 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)
  • 保留精简版本中的已弃用模块 (#3237, 0588d0ce)