jQuery 1.2.6 主要是针对 jQuery 1.2 的 bug 修复版本。您可以在 bug 跟踪器 上查看已修复内容的完整列表。
这是紧随 jQuery 1.2.3 发布的下一个版本。版本 1.2.4 和 1.2.5 被跳过(1.2.4 构建错误,使其实际上与 1.2.3 相同,而 1.2.5 缺少一个补丁)。
整个 jQuery 团队都做出了巨大的努力,才得以共同完成此版本的发布——我要借此机会感谢他们所有人的持续辛勤工作。
我还想借此机会欢迎 Ariel Flesler 加入 jQuery 核心开发团队。他在此版本的发布过程中提供了宝贵的帮助——贡献了 bug 修复、性能改进、功能和测试用例。您可以看到他的辛勤工作成果遍布整个版本。欢迎 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())中感受到。
新功能和主要更改
尺寸插件现已成为核心的一部分
Brandon Aaron 创建的尺寸插件的剩余方法已引入 jQuery 核心,并附带了额外的 bug 修复和性能改进。该插件在开发人员和插件作者中得到了广泛的使用,并已成为 jQuery 生态系统的重要组成部分。在过去几个版本中,我们一直在逐渐引入尺寸插件中最常用的方法——但在 1.2.6 发布时,所有剩余的方法都已成为核心的一部分。
如果您要将 jQuery 升级到 1.2.6 版本,现在可以选择从代码中排除尺寸插件。
您可以在 jQuery 文档网站上 找到尺寸插件的完整文档(并且正在将其集成到 jQuery 核心文档中)。
.attr() 大修
.attr() 方法已完全重新设计(解决了大约 15 个未解决的 bug)。此外,该方法已得到显著简化和优化。
.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() 函数允许您在 jQuery 集合中找到 DOM 元素的位置——现在您还可以指定一个 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 有许多命名的动画速度(例如“慢”、“快”和“默认”),您现在可以通过操作 jQuery.fx.speeds 对象来提供您自己的动画速度名称或修改现有名称。
jQuery.fx.speeds.slow = 1000;
$("#test").slideDown("slow");