jQuery 1.5 发布

发布日期: 作者:

如期而至,jQuery 1.5 已经准备就绪!

这个版本已经酝酿了很长时间,并且是团队共同努力的结果。请借此机会感谢 jQuery 团队jQuery Bug 分类团队 的成员,感谢他们帮助发布了这个版本。

下载

和往常一样,我们提供了两个版本的 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 个 Bug,总共关闭了 460 个 Ticket

测试套件(现在包含 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

延迟对象

随着 Ajax 模块的重写,引入了另一个新功能,该功能也已公开发布:延迟对象。这个 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 创建自己的延迟对象。有关此 API 的更多信息,请参阅 延迟对象 文档。

Eric Hynds 编写了一篇关于 在 jQuery 1.5 中使用延迟对象 的优秀教程。

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()。我们看到的加速非常显著(可能快得多,具体取决于浏览器)。

.children() Performance in jQuery 1.5

.prev() Performance in jQuery 1.5

.next() Performance in jQuery 1.5

性能测试用例和原始数字

构建系统

最后,我们对 jQuery 的内部构建系统进行了一些更改。我们致力于将所有构建过程标准化为优秀的服务器端 JavaScript 环境:NodeJS。我们特别感谢这一点,因为我们能够减少对遗留 Java/Rhino 系统的依赖,并将更多精力集中在新兴的 JavaScript 环境上。

此外,在此切换过程中,我们已从 Google Closure Compiler 转为使用 UglifyJS。我们发现使用它时文件大小有一些明显的改进,因此我们对这次切换非常满意。

谢谢!

与往常一样,我们要感谢所有帮助发布此版本的人 - 你们的贡献是不可或缺的。如果您有任何问题或发现任何 Bug,请将您的问题提交到 jQuery Bug 跟踪器

关于“jQuery 1.5 发布”的 123 条评论

  1. Pawel 说:

    很棒的工作!但是,我涉及(非常基本)Ajax 的项目,例如 load() 方法,在这个新版本中无法工作。

  2. Selim Rana 说:

    感谢所有团队的努力,很棒的工作。我很高兴 jQuery 的体积缩小了。

  3. 我在 IE 9 中遇到了错误“对象不支持此属性或方法”。第 5460 行和 1.5 的最小化版本的第 16 行。

    指向这行代码“srcElements = elem.getElementsByTagName(“*”);”

    仅在 IE9 中,这应该是一个 IE9 问题。

  4. CHARLY 说:

    谢谢!太棒的工作了。JQuery 是当今互联网开发中最令人兴奋的糖果之一,这些糖果越来越甜!:)