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 v. 1.2.6 Google 电子表格 中找到(Internet Explorer 6 的结果因其与 Internet Explorer 7 的结果几乎相同而被排除)。
事件处理速度提高 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 的 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() 函数允许您在 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 有许多命名的动画速度(例如“slow”、“fast”和“default”),您现在可以通过操作 jQuery.fx.speeds 对象,为动画速度提供您自己的名称,或修改现有名称。
jQuery.fx.speeds.slow = 1000;
$("#test").slideDown("slow");