jQuery 1.8.1 发布
过去几周非常忙碌但也很有成效,jQuery 核心团队很高兴宣布 jQuery 1.8.1 已发布!此版本修复了社区在 1.8.0 正式发布后报告的问题。以下是您可以使用的文件:
- https://code.jqueryjs.cn/jquery-1.8.1.min.js (生产,压缩)
- https://code.jqueryjs.cn/jquery-1.8.1.js (开发,未压缩)
Google 和 Microsoft CDN 也会很快提供副本。
以下是修复的最后一些 bug。请记住,我们喜欢在测试版和候选版本中听到有关 bug 的消息!您不必等到正式发布才能用您的代码进行测试。我们越早修复这些 bug,团队和 jQuery 社区就能越顺利地进行操作。
使用 jQuery UI 1.8.23 和 jQuery Mobile 1.1.1 或更高版本以实现与 jQuery 核心 1.8.1 的最佳兼容性。
不要使用 怪癖模式!jQuery 从未支持怪癖模式,我们也不在怪癖模式下进行任何测试。这会影响像 $("window").height()
这样的值,并且 jQuery 1.8 怪癖模式结果发生了变化以支持一些现代浏览器功能。我们看到的大多数问题情况都是由希望使用标准模式但其 doctype 无效或在 <html>
标记之前有额外的标记的开发人员造成的。如有疑问,请使用简单且简短的 <!doctype html>
。
Sizzle 的接受参数的自定义伪选择器已更改,但 jQuery 1.8.1 为旧代码提供了兼容性垫片。Sizzle 和 jQuery 都没有记录它们以前的工作方式;现在有 Sizzle 的官方文档。请查看该文档以获取有关编写适用于所有版本的 jQuery 的自定义伪选择器的最佳实践示例。
衷心感谢为此次发布贡献补丁的团队成员和社区成员:Timmy Willison、Mike Sherov、Elijah Manor、Mike Pennisi、Richard Gibson、Corey Frang、Mathias Bynens、Oleg Gaidarenko、Nikita Govorov、Julian Aubourg 和 Rick Waldron。
我们也非常感谢那些抽出时间为 jQuery 1.8.1 创建 良好的 bug 报告 的人。如果我们在这个版本中意外遗漏了任何 bug,请告知我们。首先检查 bug 跟踪器,看看是否已报告。如果没有,请使用 jsFiddle.net 或 jsbin.com 创建一个测试用例,其中包含演示问题的最少代码量。
jQuery 1.8.1 变更日志
Ajax
- #12233: jQuery.post() 抛出“RangeError: Maximum call stack size exceeded”
- #12234: .load() 方法,当 params 为 null 时,ajax 类型将为“POST”,而不是“GET”
核心
- #12282: 1.8.0 回归 - 文档就绪在 IE 9/10 上过早触发
- #12329: event.js 仍然包含对 bindReady 的引用
- #12350: jQuery.trim 应该删除字节顺序标记 (BOM) 字符
- #12370: jquery android 2.1-update1 问题
Css
- #12235: getComputedStyle 在没有命名空间的情况下使用
- #12313: .height() 和 .width() 不再在 offsetWidth 未定义的情况下回退到 CSS。
- #12324: cssNormalTransform 可能生成错误的值
数据
- #10863: .data 方法如果 JSON 字符串包含换行符,则不会返回对象。
尺寸
- #12283: jQuery 1.8 outerHeight 返回 undefined 而不是 null
效果
- #12273: animate 在持续时间为 0 时失败
事件
操作
队列
- #12278: .promise(type) 不适用于非默认队列
选择器
- #12205: 各种伪选择器问题
- #12237: 具有子选择器和多个 :not 与 :visible 不再起作用
- #12241: 为 :eq 传递负索引会抛出语法错误。
- #12285: 自 1.8 以来,带有 :not(:first) 的选择器不起作用
- #12292: 无效选择器会导致后续有效选择器无法工作
- #12303: 属性选择器如果属性值包含 :first :last,则会失败
- #12311: jQuery 1.8 和 .is(":visible")
- #12314: $.contains 在 IE9 中出现致命错误,第二个参数为 null
- #12359: 1.8.0 在加载库时创建无效的标签/属性
- #12369: ajax,使用 find 方法读取 xml
- #12403: 选择器 "> li > :first-child,> :not(li):even" 在旧版 IE 中失败
- #12409: 自定义伪选择器的向后兼容问题
- #12412: Sizzle 回归 ":not([data-role='list-divider']):not(:hidden)"
- #12419: 复合选择器如果 id 属性包含点,则会失败。
支持
- #12333: $.browser.webkit (undefined) -> $.browser.chrome
注意到 jQuery.support() 中有一个毫无意义的保护
a = div.getElementsByTagName(“a”)[ 0 ];
a.style.cssText = “top:1px;float:left;opacity:.5”;
// 无法获得基本测试支持
if ( !all || !all.length || !a ) {
return {};
}
对 !a 的测试毫无意义,因为 a.style.cssText 会在到达 !a 之前抛出异常。
干杯
哇!即使有“文档就绪过早触发”这个糟糕的 bug,我也没想到会在美国假期之后得到这个更新。
现在就转向 2.0 :) 你们其他人:在抱怨不能使用 2.1 版之前,先将您的网站从 jquery 1.4 和 1.5 迁移出去,因为您在中国有网站 ;)
祝贺 jQuery 团队!
您的框架完美无缺,您的支持快速而出色。我今晚会测试新版本,然后等待 google CDN。;)
非常感谢!
Mike
IE 相关的东西工作得更好。它修复了几个我甚至没有意识到存在于 jquery 1.8 库中的问题。谢谢!
表格中的 tr.even 和 tr.odd 背景颜色 (css),以及 jQuery DataTables (http://www.datatables.net),在升级到 1.8.1 后停止工作。在切换回 1.8.0 时一切正常。
在我们的大型网络应用程序中看到了使用 1.8.1 时出现了一个严重的性能问题,而在使用 1.8.1 时没有出现。
最明显的是在文本框中输入时(每次按键后大约有 500 毫秒的延迟)和点击表单元素周围。
该应用程序具有大型 DOM,但 1.8.0 可以很好地处理它。
很棒且快速的修复!我注意到不仅修复了那里列出的问题,还修复了一些 [http://bugs.jquery.com/ticket/12416 其他] 回归。
Google CDN 什么时候会提供 1.8.1 版?
如果这些评论也能使用像 Bugtracker 那样的迷你标记编辑器就好了。=]
Morris 提到的问题是,之前这段 CSS 是在 div.innerHTML 赋值中内联设置的。
也许应该将 a.style.cssText 赋值移到 !a 测试之后。
你们会做一个在线工具来让人们可以自定义 jQuery 1.8.x 吗?
我不是一个伟大的开发者,我不理解你们的 "grunt-thing" 。:)
我同意 Simon 关于性能的评论(至少对 IE8 来说是这样)。我有一个使用 jsTree、自动完成、.on() 事件处理程序的复杂 UI,仅仅是聚焦一个文本框,在 1.8.1 中就会出现明显的停顿,而在 1.8.0 中却没有。
我不知道我能提供哪些有用的细节,请告诉我。
David,第一个参数实际上必须是一个元素。
我建议你停止在生产代码中使用 $._data(element, “events”)。阅读 JQuery 1.8 的发布说明中的 “已移除的内容” 部分(https://blog.jqueryjs.cn/2012/08/09/jquery-1-8-released/)
“你仍然可以使用 $._data(element, “events”) 获取事件数据以进行调试。注意,这不是一个受支持的公共接口;实际的数据结构可能会在不同版本之间发生不兼容的更改。”
我也发现 IE 7、8、9 的性能很慢。我在 1.8 和 1.8.1 中都看到了这种性能下降。但在 1.7.2 或更低版本中没有看到这种缓慢。我想提交一个 bug 报告,但我不知道问题出在哪里。
缓慢现象非常奇怪,因为它似乎影响到所有东西。即使是纯粹的 CSS 链接悬停效果也存在延迟。目前我无法缩小范围,但我将继续尝试找出问题所在。
我遇到了与 Setfan Hayden 相同的性能问题,但只在 IE 7 中出现。IE 8 和 9 运行完美。
压缩版本中有一些不可见的非 ANSI 字符,导致我的文本编辑器在尝试导航时表现得很奇怪。我不确定这在生产环境中会造成什么问题——也许是上面提到的性能问题?
我遇到了同样的缓慢现象,但在所有浏览器上都是如此,1.7.2 运行相同的代码却很流畅。
性能问题可能是由我使用的 UI 版本 1.8.23 造成的。
我们尝试将 jQuery 升级到 1.8.1,将 jQuery UI 升级到 1.8.23。在 IE 6 和 7 中,我们开始收到常见的错误,“页面上的脚本导致 Internet Explorer 运行缓慢。如果继续运行,你的计算机可能会变得无响应”。我们恢复到 1.7.1,错误消失了,jQuery UI 在最新版本中与旧版本的 jQuery 配合良好。我相信这肯定是我们这边的一个错误选择器,但肯定是运行速度变慢的问题。
我同意大家的观点。在 jQuery 1.7.2 中,IE 的性能很好,但升级到 1.8.1 后,我们在事件之间遇到了一些延迟。我们将 change 和 blur 事件绑定到输入字段。当 .on() 选择器绑定到大量元素时,1.8.1 在 Tab 键操作时会遇到性能下降。jQuery 1.7.2 不会出现这种行为。在解决这个问题之前,我将恢复到 1.7.2。