jQuery 1.2.2: 二周年礼物

发布日期 作者

在 jQuery 发布两周年之际,我们很高兴向大家推出一个 全新的 jQuery 版本。此版本主要针对 jQuery 1.2 的错误修复。您可以在 错误追踪器 上查看修复的完整列表。

下载

jQuery 1.2.2:

如果您想从 Subversion 仓库 中检出完整版本,您可以按照 以下说明 从以下位置检出源代码

svn co http://jqueryjs.googlecode.com/svn/tags/1.2.2

重要更改

Brandon Aaron 和 David Serduke 在此版本中付出了大量努力。David 是 jQuery 核心开发团队的新成员,并且一直在做出重大贡献 - 请欢迎他的加入!

主要来说,这是一个错误修复和优化版本。我们修复了超过 120 个 错误,我们的测试套件现在拥有超过 1157 个测试用例 - 我们对此感到非常自豪。

$(DOMElement) 速度提升 300%

我们再次对 jQuery 中使用最频繁的功能进行了微调。具体来说,就是将 DOM 元素传递给 jQuery 函数。(当您在代码中看到类似 $(this) 的内容时,最常使用这种方法。)

以下是您可以在所有主流浏览器中看到的速度提升示例:

浏览器 1.2.1 (毫秒) 1.2.2 (毫秒)
Firefox 2 0.041 0.015
Firefox 3 0.033 0.01
Safari 3 0.017 0.005
Opera 9 0.023 0.004
Internet Explorer 6 0.04 0.03

.ready() 大修

文档就绪函数已经很久没有得到过关注了。我们对此进行了一些特定的更改。

* Internet Explorer 的文档就绪功能得到了大幅改进。我们使用了一种受 Diego Perini 启发的全新技术。它使我们不再需要进行 document.write() 操作,这真的很棒。
* 除了 DOM 之外,所有浏览器现在都将等待 CSS 就绪。实际上,它不再仅仅是普通的文档就绪功能 - 但我们发现,用户普遍需要等待文档样式处于活动状态(例如,知道元素是否可见或其高度是多少)。具体来说,我们在 Safari 和 Opera 中添加了改进,使其成为可能。
* $(document).bind("ready", fn); - 您现在可以通过传统的 .bind() 函数监听文档就绪事件。当然,.ready() 仍然像您预期的那样工作。

.bind(“mouseenter”) / .bind(“mouseleave”)

作为 .hover() 函数核心功能的代码已经被拆分为两个新的跨浏览器事件:mouseenter 和 mouseleave。它们与 mouseover 和 mouseout 不同,因为后者会在您移入移出子元素时触发(这通常不是我们想要的)。例如,以下两种方法在 jQuery 1.2.2 中都是有效的,并且可以完美地工作

$("li").hover(function(){
  $(this).addClass("hover");
}, function(){
  $(this).removeClass("hover");
});
$("li").bind("mouseenter", function(){
  $(this).addClass("hover");
}).bind("mouseleave", function(){
  $(this).removeClass("hover");
});

.bind(“mousewheel”)

我们有一个 新的插件,由 Brandon Aaron 编写,基于新的事件 API,为 jQuery 核心添加了鼠标滚轮事件支持。这将使您可以编写如下代码

$("div").bind("mousewheel", function(event, delta){
  if ( delta < 0 )
    $(this).append("up");
  else
    $(this).append("down");
});

复杂的 :not()

虽然它不是 CSS 3 规范的一部分,但它是一个常见的特性请求 - 所以您现在可以在 :not() 选择器中使用复杂的表达式。例如,以下代码现在有效

$(".hover:not(li.active)")
$("li:not(.active,.hover,:contains(test))")

Accept 标头

对于普通的 jQuery Ajax 操作,我们现在会发送一个额外的 Accept 标头,以告知服务器我们正在寻找什么类型的內容。如果您指定了 dataType 参数,那么我们将为您处理所有标头设置。我们目前为每个 dataType 发送以下标头。

  • xml "application/xml, text/xml"
  • html "text/html"
  • script "text/javascript, application/javascript"
  • json "application/json, text/javascript"
  • text "text/plain"
  • 其他所有:"*/*"

错误修复

以下是部分经过重要调整的功能示例。

* .clone() 大修
* 脚本评估大修
* height() / width() 大修
* 跨框架 DOM 操作
* 解决了一些内存泄漏问题

事件 API

现在有一个新的 API 用于处理事件。您现在可以创建自己的自定义事件类型(具有自定义的设置和拆卸方式)。实际上,它允许您超越简单的事件触发,并为在元素上附加、处理和拆卸事件创建一个完整的方案。Brandon Aaron 创建了一个 演示插件,您可以使用它来学习这个强大的新 API。

关于 “jQuery 1.2.2: 二周年礼物” 的 51 条评论

  1. 哇!太棒的变更日志了,感谢 jQuery 团队,生日快乐!这个库每天都让我摆脱了曾经的 JS 痛苦。:) 继续摇滚吧!

  2. 新的事件 API 和对 $() 的速度改进都是非常好的消息。我们一直在等待一个更快的 elm 选择器,现在我们有了它。

    来自巴西的 Marco Gomes

  3. Pingback: jQuery 1.2.2 ha visto la luz | aNieto2K

  4. 生日快乐!

    DOM 元素传递在 IE7 中也能获得速度提升吗(不是主流浏览器?)

    难道不是生日捐赠日吗?:)

  5. Michaël 说:

    哇,你每次的“bug 修复版本”都充满了新功能,不仅是修复!:-D
    非常感谢你出色的工作!jQuery 生日快乐!

  6. Pingback: Bram.us » jQuery 1.2.2 发布

  7. Bohdan Ganicky 说:

    鼓掌,再次鼓掌。我认为现在是时候在“捐赠”按钮旁边添加一个“PayPal 订阅”按钮了。与其偶尔捐赠 10 美元,不如每月捐赠 10 美元。jQuery 真的值得这样做,不是吗?

  8. 万岁!另一个很棒的版本,看起来又是一款赢家 :) John,你同时在 FF3、jQuery 和写书之间忙碌,真不知道你从哪里抽出时间 :) 也祝贺整个 jQuery 核心团队 :)

  9. Pingback: jQuery 生日快乐!发布 1.2.2 版 « Rip 的领域

  10. Pingback: jQuery 1.2.2: 二周年礼物 « outaTiME

  11. Pingback: jQuery Minuteâ„¢ » jQuery 1.2.2 发布

  12. Pingback: jQuery 1.2.2 发布 « 开放源代码 Weblog

  13. Pingback: Fusioncube » 博客档案 » jQuery 1.2.2 发布

  14. 感谢你们继续开发出市场上最好的 JavaScript 工具包。
    我使用它有一段时间了,它一直在变得越来越好。
    它帮助我减少了大量的 js 代码。我对于它的所有功能了解的还很肤浅。

    我会等待 1.2.2.1 版本,修复任何小的“oops”错误,然后再部署它。

  15. 我爱你!你刚刚把我从 IE JavaScript 调试的噩梦中拯救出来!非常非常感谢你。jQuery 团队真是太棒了!

  16. Pingback: Infovore » 2008 年 1 月 15 日的链接

  17. Pingback: 2008 年 1 月 16 日的链接 « Gevã Schaefer

  18. Pingback: a work on process » 2008 年 1 月 16 日的链接

  19. Pingback: 2008 年 1 月 16 日的链接 « Mandarine

  20. Pingback: jQuery 1.2.2 » Code Candies

  21. Pingback: [周年纪念] jQuery 1.2.2 为 jQuery 两周年庆贺! « Antoine Guiral:Web 2.0 学徒

  22. 嗨,我找不到 jQuery 1.2.x 版本的可打印文档。这对快速参考非常有用。我也尝试构建一个,但我找不到更新的 jquery-docs-xml.xml。

    有计划更新或发布一个打印友好的版本吗?

    感谢你们的工作,以及这个很棒的库。

    Jonatan

  23. 哇!

    我们主要使用 JQuery(一个测试结果应用程序)来构建结果页面(基本上就是它所做的所有事情),现在速度提高了 2.5 倍。太棒了。

    非常感谢你们在 JQuery 上的工作,我期待着它取得更大的进步。

  24. 嘿,伙计们,干得漂亮,感谢你们在 JQuery 上所做的一切努力。我发现一些插件在这个版本中停止工作,例如 Sam Collett 的选择框操作。一切看起来都很好,但 addAjaxOption 无法工作。我正在努力解决这个问题,如果需要,我会报告错误。

    再次感谢你们在这个版本上的出色工作……

  25. Pingback: VCL for PHP 开发博客 » jQuery 1.2.2