jQuery 1.5 发布

发布日期 作者

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 的反馈意见,如果您有任何反馈意见,请随时将其发送至 开发 jQuery 论坛

延迟对象

除了 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。我们在使用它的过程中看到了一些可靠的文件大小改进,因此我们对这次切换感到非常满意。

感谢!

一如既往,我们要感谢所有帮助我们发布这个版本的人,如果没有你们的贡献,这个版本是不可能发布的。如果您有任何问题或发现任何错误,请将您的问题提交到 jQuery 错误追踪器

jQuery 1.5 发布”的 123 条评论

  1. 我刚刚测试过,它破坏了 jQuery Tools Date/Calendar 覆盖层,该覆盖层之前在 1.4.4 中可以正常工作。看来 jQuery Tools 需要更新,但他们已经有一段时间没有太多活动了。

  2. 听到 Chrome 中 .children() 的巨大速度提升背后的故事会很有趣。在 JQuery 1.4 中,Chrome 的性能相当低,而在 1.5 中,提升幅度令人难以置信。我想应该是利用了一些原生功能。

  3. 好消息!
    jQuery 团队加油。

    非常稳定,并且向后兼容性很好!
    你们关心使用你们库的 JavaScript 开发人员。
    这解释了为什么你们是第一名。

  4. 我对性能改进感到印象深刻。但是,为什么 Chrome 和 Safari 显示出显着的改进,而其他浏览器却落后?
    有什么特殊原因吗?

  5. Saul Montalvo Perales 说:

    出色的工作,Jhon!感谢所有参与的人!恭喜整个团队。

    来自墨西哥蒙特雷的问候。

  6. 太棒了!正是因为 jQuery 我才爱上了为网页开发,我迫不及待地想深入了解 1.5 的最新特性!

  7. Francois Henderson 说:

    出色的工作,速度大幅提升,异步调用处理程序很棒,80 多个错误修复,这就是我所说的重大发布。

    继续努力,我爱 jQuery ;)!
    干杯!

  8. André R. 说:

    为了在所有这些 *4ws0m3* 评论中突出显示问题。
    1. IE9 测试?当你测试 FF4b 和 Chrome 开发/测试版渠道时,不测试它看起来很奇怪。
    2. Google CDN 仍然无法使用,是阴谋论,强迫人们使用 MS CDN 吗?:P

  9. 干得好!jQuery 让 Javascript 成为它应有的样子。我爱链接和 jQuery 的易用性。它非常简单,可以快速完成任务。

    期待使用这个新版本。

  10. Bruno Couto 说:

    为什么它可以在 Google CND 上使用,但不能使用 google.load("jquery", "1.5.0")?
    应该使用哪个,为什么?
    感谢!

  11. $(‘#div’).animate({backgroundPosition: ’50px 50px’}, 100);

    这行代码在 jQuery 1.4.4 中有效。
    但在 1.5 中不再有效。

    根据文档。
    “所有动画属性都应动画化为单个数字值,但以下情况除外;大多数非数字属性无法使用基本的 jQuery 功能进行动画处理。(例如,可以对 width、height 或 left 进行动画处理,但不能对 background-color 进行动画处理。)”

    这是新功能吗?