jQuery 1.2.6 主要是一个针对jQuery 1.2的错误修复版本。您可以在错误追踪器上查看修复内容的完整列表。
这是紧随 jQuery 1.2.3 之后的下一个版本。版本 1.2.4 和 1.2.5 被跳过(1.2.4 构建不正确,实际上与 1.2.3 相同,而 1.2.5 缺少补丁)。
整个 jQuery 团队在发布这个版本方面做得非常出色。我要借此机会感谢他们所有人的持续努力。
我还要借此机会欢迎 Ariel Flesler 加入 jQuery 核心开发团队。他在发布这个版本方面提供了宝贵的帮助,包括贡献错误修复、性能改进、功能和测试用例。您可以看到他的辛勤工作在这个版本中的体现。欢迎 Ariel,感谢他对这个版本做出的贡献!
下载
jQuery 1.2.6
如果您想从Subversion 仓库签出完整版本,您可以按照说明从以下位置签出源代码
svn co http://jqueryjs.googlecode.com/svn/tags/1.2.6
性能改进
jQuery 团队再次努力在这个版本中带来了巨大的性能改进。与以前版本一样,我们扩展了对 jQuery 框架的许多领域的分析,寻找常见的痛点,并提供解决方案。
以下性能改进的所有数据和测试用例都可以在以下jQuery 1.2.3 与 1.2.6 的 Google 电子表格中找到(为了与 Internet Explorer 7 的结果几乎完全相同,排除了 Internet Explorer 6 的结果)。
事件处理速度提高 103%
在分析密集型应用程序代码(特别是拖放操作)时,我们寻找可以进行通用更改的方式,这些更改会影响所有用户。经常调用的一段代码是 jQuery 事件处理程序,对其进行任何优化都会极大地提高所有由此产生的经常调用事件的性能。通过专注于此处的改进,您拥有的所有经常调用事件都应该看到直接的好处。
CSS 选择器速度提高 13%
对 jQuery 内部方法进行了一系列优化,极大地提高了它们的性能,同时对 jQuery 中一些最常用的代码(如 CSS 选择器代码)提供了可衡量的益处。
例如,jQuery.map() 方法现在快了 866%,而jQuery.extend() 快了 19%。这两项更改使整个库的性能得到了显著提升。
.offset() 速度提高 21%
与对 jQuery 事件处理代码的改进一起,对 .offset() 的优化使基于鼠标的密集操作变得更快。例如,由于这些更改,jQuery UI 的拖放代码现在快了 300% 以上(使您可以实现更快、更流畅的拖放操作)。
.css() 速度提高 25%
一种经常调用(在内部和外部)的方法。对该方法的优化可以轻松地在其他方法(例如 .offset())中感受到。
新功能和重大更改
Dimensions 插件现在是核心的一部分
Brandon Aaron 开发的 Dimensions 插件的剩余方法已引入 jQuery 核心,并附带额外的错误修复和性能改进。该插件在开发人员和插件作者中得到了广泛使用,并已成为 jQuery 生态系统中的重要组成部分。我们一直在慢慢地将 Dimensions 插件中最常用的方法引入过去几个版本中,但在 1.2.6 版本发布后,所有剩余的方法现在都已成为核心的一部分。
如果您将 jQuery 版本升级到 1.2.6,您现在可以选择从代码中排除 Dimensions 插件。
Dimensions 的完整文档可以在jQuery 文档网站上找到(并且正在与 jQuery 核心文档集成)。
.attr() 大修
.attr() 方法已彻底大修(解决了大约 15 个未解决的错误)。此外,该方法已得到显著简化和优化。
.toggle() 现在可以接受更多函数
历史上,jQuery 的 .toggle() 函数接受两个函数(以偶数/奇数方式切换)。但是,这已经更改,因此可以提供任意数量的函数,并通过鼠标点击切换。
$("div").toggle(function(){
$(this).removeClass("three").addClass("one");
}, function(){
$(this).removeClass("one").addClass("two");
}, function(){
$(this).removeClass("two").addClass("three");
});
您现在可以取消绑定绑定的 .toggle() 和 .one() 函数
function test(){ $(this).addClass("test"); }
$("div").one("click", test);
$("div").unbind("click", test);
$("div").toggle(test, test);
$("div").unbind("click", test);
.index() 支持 jQuery 集合
jQuery 的 .index() 函数允许您查找 DOM 元素在 jQuery 集合中的位置,现在您还可以指定一个 jQuery 集合(其第一个元素将被提取并在原始集合中找到)。
var test = $("div.test");
$("div").index( test ) == 3
jQuery.makeArray 可以将任何内容转换为数组。
jQuery 的内部 .makeArray() 方法现在将任何类似数组的对象转换为新的数组。此外,它将所有其他对象包装为数组,并返回生成的集合。
jQuery.makeArray( document.getElementsByTagName("div") )
// => [ div, div, div ]
jQuery.makeArray( true )
// => [ true ]
jQuery.makeArray()
// => []
beforeSend 可以取消 Ajax 调用
beforeSend Ajax 回调允许开发人员在请求发生之前执行一段代码,现在这段代码还可以验证一些参数的完整性并取消由此产生的 Ajax 请求(对于表单验证等任务很有用)。
$.ajax({
beforeSend: function(){
return $("#input").val() == "";
},
url: "test.php"
});
公开速度
jQuery 有许多命名的动画速度(例如“slow”、“fast”和“default”),您现在可以通过操作 jQuery.fx.speeds 对象,为动画速度提供自己的名称,或修改现有名称。
jQuery.fx.speeds.slow = 1000;
$("#test").slideDown("slow");