在 jQuery 发布两周年之际,我们很荣幸地向您带来 全新的 jQuery 版本。这主要是一个针对 jQuery 1.2 的错误修复版本。您可以在 错误追踪器 上查看完整的修复列表。
下载
- jQuery 压缩版 (使用 Gzipping 压缩后为 15kb)
- jQuery 打包版 (28kb)
- jQuery 常规版 (93kb)
如果您想从 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))")
接受报头
对于普通的 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。