如期而至,jQuery 1.5 已经可以享用了!
这个版本已经酝酿了很久,并且是真正的团队合作的成果。 请借此机会感谢 jQuery 团队 和 jQuery 错误分类团队 的成员,感谢他们在发布这个版本方面提供的帮助。
下载
像往常一样,我们提供两个 jQuery 副本,一个是最小化的,一个是没有压缩的(用于调试或阅读)。
您可以随意将上面的 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 个错误,总共关闭了 460 个工单。
测试套件(现在有 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 论坛。
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 现在公开了一种新方法,您可以使用该方法创建和修改 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 环境上。
此外,随着这次切换,我们开始使用来自 Google Closure Compiler 的 UglifyJS。 我们在使用它时看到了一些可靠的文件大小改进,因此我们对这次切换感到非常满意。
谢谢!
一如既往,我们要感谢所有为本次发布做出贡献的人 - 没有你们的贡献,本次发布将不可能实现。如果您有任何问题或发现任何错误,请将您的问题提交到 jQuery bug tracker。