如期而至,jQuery 1.5 已经准备就绪!
这次发布历时已久,是一项真正的团队努力。请借此机会感谢 jQuery 团队 和 jQuery bug triage 团队 的成员,感谢他们帮助将这次发布推向市场。
下载
像往常一样,我们提供两个版本的 jQuery,一个压缩版和一个未压缩版(用于调试或阅读)。
- jQuery 压缩版 (29kb Gzipped)
- jQuery 正式版 (207kb)
您可以直接将以上 URL 包含到您的网站中,从而获得快速加载 jQuery 的全部性能优势。
此外,您还可以直接从 Microsoft 和 Google 的 CDN 加载 URL
Microsoft CDN: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.min.js
Google CDN: https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.5.0/jquery.min.js
关于本次发布
本次发布修复了 83 个已修复的 bug,总共关闭了 460 个 issue。
测试套件(现在有 4437 个测试)在 jQuery 支持的所有浏览器以及更多浏览器中都通过了测试。我们验证了该套件通过了以下所有浏览器
- Safari 5.0.3 / 4.0.5 / 3.2.3 / 3.1.2
- Opera 11.01 / 11 / 10.63 / 10.54 / 10.10 / 9.64
- IE 6 / 7 / 8
- Firefox 4.0b9 / 3.6.13 / 3.5.11 / 3.0.19 / 2.0.0.20
- Chrome 8.0.552.215 / 8.0.552.237 / 9.0.597.67 Beta / 10.0.642.2 Dev
此外,发布版本的全部 API 文档可以在 API 网站上找到:jQuery 1.5 API 文档。
我们的未来发布计划可以在我们的 路线图 上找到。目前我们计划更频繁地发布主要的 jQuery 版本(可能每年几次,而不是每年一次)。
所以,不多说,jQuery 1.5 发生了哪些变化?
Ajax 重写
本次发布中最大的变化是 jQuery 中 Ajax 模块的完整重写。这次重写有助于修复旧 Ajax 系统中存在的许多漏洞,并提供更高水平的 API 一致性。
也许最大的变化是,对 jQuery.ajax(或 jQuery.get、jQuery.post 等)的调用现在返回一个 jqXHR 对象,该对象在跨平台中为 XMLHttpRequest 对象提供一致性(并允许您执行以前不可能的任务,例如中止 JSONP 请求)。
有关新的 jqXHR 对象的更多详细信息,请参阅 jQuery.ajax() 文档。
除了更一致的 API 之外,Ajax 系统现在也更加可扩展,允许您附加各种数据处理程序、过滤器和传输器。这些更改应该会开启全新的 Ajax 插件领域,这些插件可以利用这种可扩展性。有关更多信息,请参阅 扩展 Ajax 文档。团队正在积极征求有关 Ajax 可扩展性 API 的反馈,如果您有任何反馈,请随时发送到 Developing jQuery Forum。
Deferred 对象
随着 Ajax 模块的重写,还引入了一个新功能,该功能也公开可用:Deferred 对象。此 API 允许您使用尚未立即可用的返回值(例如异步 Ajax 请求的返回值)来工作。此外,它还使您能够附加多个事件处理程序(以前在 Ajax API 中不可能实现)。
例如,以下内容现在可以使用 jQuery 的内部 Ajax API 实现
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
// perform other work here ...
// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });
此外,您可以使用公开的 jQuery.Deferred 创建自己的 deferred 对象。有关此 API 的更多信息,请参阅 Deferred 对象 文档。
Eric Hynds 写了一篇关于 在 jQuery 1.5 中使用 Deferreds 的优秀教程。
jQuery.sub()
jQuery 现在公开了一种新的方法,您可以使用它来创建和修改 jQuery 的克隆,同时仍然利用完整的 jQuery API。例如,您可以使用它来覆盖本机 jQuery 方法,而不会影响其他用户将与之交互的方法,甚至为您的插件创建封装的 API,以避免命名空间冲突。
这是一个将方法添加到 jQuery 子类,使其不公开的示例
(function(){
var sub$ = jQuery.sub();
sub$.fn.myCustomMethod = function(){
return 'just for me';
};
sub$(document).ready(function() {
sub$('body').myCustomMethod() // 'just for me'
});
})();
typeof jQuery('body').myCustomMethod // undefined
有关 jQuery.sub() 的更多信息,请参阅 API 文档。
请注意,如果您希望将其用于插件开发,则应首先认真考虑使用 jQuery UI 部件工厂,它管理状态和插件子方法。 使用 jQuery UI 部件工厂构建插件的一些示例。
相邻遍历性能
在此版本中,我们还能够提高一些常用遍历方法的性能:.children()、.prev() 和 .next()。我们看到的速度提升非常显著(根据浏览器,可能快很多倍)。
构建系统
最后,我们对 jQuery 的内部构建系统进行了一些更改。我们致力于将所有构建过程标准化为出色的服务器端 JavaScript 环境:NodeJS。我们特别感谢这一点,因为我们能够减少对遗留 Java/Rhino 系统的依赖,并更加专注于新兴的 JavaScript 环境。
此外,随着这种转变,我们转而使用 UglifyJS 而不是 Google Closure Compiler。我们使用它后看到了一些不错的的文件大小改进,因此我们对此转变感到非常满意。
谢谢!
与往常一样,我们感谢所有帮助这次发布的人——没有您的贡献,这次发布是不可能实现的。如果您有任何问题或发现任何错误,请将您的 issue 提交到 jQuery bug tracker。



当我们去年一月向 API 文档添加评论时,其想法是为社区成员提供一个地方,以便通过他们自己的提示或实际示例来扩充文档。虽然该系统在最初推出时效果很好,但它已变得越来越难以管理它所吸引的大量垃圾邮件。我们还发现许多人试图将其用作支持系统,而它并非为此目的而设计的。因此,我们计划在本周晚些时候关闭 API 网站上的评论,转而采用更直接的反馈选项