jQuery 1.5.1 发布

发布于

jQuery 1.5.1 现已发布!这是 jQuery 1.5 的第一个小版本,包含了一些错误修复。

我们要感谢以下为本版本提供补丁的贡献者:antonkovalyov、csnover、danheberden、davidmurdoch、dmethvin、gnarf37、jaubourg、jeresig、jitter、jrburke、lrbabe、mathiasbynens、rwldrn、SlexAxton 和 voxwerk。

我们特别感谢我们的错误分类团队,他们在缩小本版本需要的一些重要修复方面提供了帮助。

下载

和往常一样,我们提供两个版本的 jQuery,一个是最小化的,一个是不压缩的(用于调试或阅读)。

您可以随意将上面的 URL 直接包含到您的网站中,您将获得快速加载 jQuery 的全部性能优势。

此外,您也可以直接从 Microsoft 和 Google 的 CDN 加载 URL。

Microsoft CDN: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js

Google CDN: https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.5.1/jquery.min.js

1.6 路线图会议

jQuery 核心开发团队现在正在接受针对 jQuery 1.6 的更改提案。我们目前计划在 4 月下旬/5 月初发布 jQuery 1.6,并将在 3 月 7 日美国东部时间中午举行会议讨论提交的提案(会议将在 irc.freenode.net 上的 #jquery-meeting 举行)。

请在 3 月 7 日会议之前通过 以下表格 提交您的提案。

jQuery 1.5.1 变更日志

jQuery 1.5.1 Test Swarm Results

API 文档: jQuery 1.5.1 API 文档

由于这是一个错误修复版本,因此没有新的功能要报告。唯一的更改如下

jQuery 现在支持 Internet Explorer 9 作为顶级浏览器。所有已知的错误都已修复或已报告给 IE 团队,以便在最终版本中解决。

三个新选项已添加到 jQuery.ajax()

  1. isLocal: 允许将当前环境识别为“本地”(例如文件系统),即使 jQuery 默认情况下不将其识别为本地也是如此。以下协议目前被识别为本地:file、*-extension 和 widget。如果 isLocal 设置需要修改,建议在 $.ajaxSetup() 方法中执行一次修改。
  2. mimeType: 用于覆盖 XHR 类型的 MIME 类型。
  3. xhrFields 用于在本地 XHR 对象上设置 fieldName-fieldValue 对的映射。例如,您可以使用它在需要时将 withCredentials 设置为 true 以进行跨域请求。

已关闭的工单

以下是已关闭的所有错误和工单的完整列表

  • #2551 确保 .val() 在 IE 中 form.reset() 之后也能正常工作
  • #4537 确保 .clone(true) 正确克隆命名空间事件
  • #4966 不要在对无单位属性进行动画处理时向其添加“px”
  • #6774 确保我们只在可用时访问 parentNode。修复了在选项标签分离后抛出 elem.parentNode 错误的问题。
  • #6911 阻止对禁用元素的操作,包括触发和通过 .live() 绑定
  • #7531 再次修复 IE9RC。增强了 ajaxSetup,使其能够接受可选的 target 选项,在这种情况下,target 将被更新而不是 ajaxSettings。这样,可以列出不应该进行深度扩展的字段,并在一个地方进行处理。jQuery.ajax 现在使用带有 target 的 ajaxSetup 来创建其内部设置对象
  • #7568#5862 的后续修复。具有 length 属性的对象不能被 jQuery.param 正确序列化
  • #7653 更改正则表达式以检测本地协议,以便它可以接受任何以 -extension 结尾的协议
  • #7668 Sizzle 和 jQuery QUnit 测试不同步
  • #7912 此更改使 .cur() 更加 .cssHooks 友好。如果 .cur() 不是数字、类似数字的值或需要回退到 0 的值,它现在将返回 .css() 未修改的值。
  • #7922 修复了在 IE 中,live(‘submit’) 先绑定时,live(‘click’) 不触发的错误
  • #7945 使 jQuery.param() 正确序列化具有名为 jquery 的属性的普通对象
  • #8033 jQuery 1.4.4+ 无法在具有旧的 Prototype (<= 1.5) 或 Current Prototype + Scriptaculous 的 IE 页面上加载
  • #8039 使用 HTML5 输入类型的选择器在 IE6/7 中无法正常工作
  • #8052 更新 jQuery.support.noCloneEvent 测试,使其在 IE9 中正常运行
  • #8095 正确处理需要绕过浏览器缓存但服务器端逻辑仍然提供正确的 304 响应的情况。已添加单元测试
  • #8098 在可用时使用快速的 document.head
  • #8099 始终根据元素的预期默认显示恢复到正确的显示值
  • #8107 修复 $.ajax 多个方法签名的参数处理,并添加测试用例
  • #8108 对使用 JSON.stringify 序列化时,jQuery 元数据暴露在普通 JS 对象上的临时修复,以避免破坏兼容性的更改。对此的正确修复将在 1.6 中发布
  • #8115 将代码中的所有 jXHR 引用重命名为 jqXHR(与文档中所做的一样)
  • #8123 .clone() 的默认行为是不克隆任何事件
  • #8125 当 location.protocol 为“file:”时,状态设置为 200 用于状态为 0 的请求。已添加 test/localfile.html 来控制它是否正常工作
  • #8129 修复了在 IE8 中克隆多个选定选项的问题
  • #8135 确保在尝试访问网络错误发生时 XMLHttpRequest 属性时,Firefox 抛出的任何异常都被捕获并报告为错误。已添加 test/networkerror.html 来测试此行为
  • #8138 仅在加载时访问一次 document.location,如果失败(在 document.domain 已经设置时,IE 中会抛出异常),我们将使用 A 元素的 href 代替
  • #8145 已添加 readyWait 测试
  • #8146 引入了 xhrFields 选项,它是一个用于在本地 xhr 上设置 fieldName/fieldValue 的映射。可以用来在需要时将 withCredentials 设置为 true 以进行跨域请求
  • #8152 对“chrome-extension:”协议应用与“file:”相同的特殊情况(需要测试)。重新组织并修复了 xhr 传输中对 HTTP 状态代码的特殊情况的处理
  • #8177 XHR 传输现在将 304 Not Modified 响应视为 200 OK,前提是没有提供条件请求头(根据 XMLHttpRequest 规范)
  • #8193 修复了预过滤器中的中止问题。即使全局选项设置为 true,也不会在那种情况下触发全局事件。已添加单元测试
  • #8198 删除不必要的“script.type = text/javascript;”
  • #8200 取消公开 $.support._scriptEval,因为它不再需要。使用私有变量代替
  • #8209 确保将鼠标悬停在 Chrome“内部 div”上不会触发 mouseleave
  • #8219 引入了 mimeType 选项,用于在转换中覆盖 content-type 标头(以及在可能的情况下,在本地 xhr 中)。在 jqXHR 对象上添加了配套的 overrideMimeType 方法(它只是设置了选项)
  • #8220 从标签名称过滤器中删除反斜杠
  • #8245 Ajax 现在确保标头名称是大写的,这样不符合规范的 xhr 实现就不会覆盖它们
  • #8250 ajax 在 opera 10 小部件中无法正常工作
  • #8277 将 data 设置为 undefined 而不是 null,如果它没有在 ajax 帮助程序中提供,以便它不会阻止在 ajaxSettings 中设置的 data 被使用。
  • #8297 确保正确处理具有空值的响应标头,并且不会阻止对整个响应标头字符串的正确解析。
  • #8353 在 resolveWith 中添加了一个 catch 块,以便 finally 块在 IE7 和 IE6 中执行。
  • #8365 确保 IE 9 仍然克隆属性。

jQuery 1.5.1 RC 1 发布

发布于

我们即将发布 jQuery 1.5 的第一个更新,我们很高兴地宣布第一个发布候选版本的发布!如果没有重大错误,这应该就是我们最终为 jQuery 1.5.1 发布的代码(将于 2 月 24 日发布)。

jQuery 1.5.1 发布候选版 1

您可以从 jQuery CDN 获取代码

您可以通过将该代码放入您现有的应用程序中并告诉我们是否有什么东西不再起作用来帮助我们。请 提交一个错误,并确保提到您正在针对 jQuery 1.5.1 RC 1 进行测试。

我们想鼓励社区中的每个人尝试 参与 回馈 jQuery 核心。我们设置了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队就在这里,随时准备帮助您帮助我们!

jQuery 1.5.1 RC 1 变更日志

1.5.1 版本的当前变更日志。

  • #2551 确保 .val() 在 IE 中 form.reset() 之后也能正常工作
  • #4537 确保 .clone(true) 正确克隆命名空间事件
  • #4966 不要在对无单位属性进行动画处理时向其添加“px”
  • #6774 确保我们只在可用时访问 parentNode。修复了在选项标签分离后抛出 elem.parentNode 错误的问题。
  • #7531 再次修复 IE9RC。增强了 ajaxSetup,使其能够接受可选的 target 选项,在这种情况下,target 将被更新而不是 ajaxSettings。这样,可以列出不应该进行深度扩展的字段,并在一个地方进行处理。jQuery.ajax 现在使用带有 target 的 ajaxSetup 来创建其内部设置对象
  • #7568#5862 的后续修复。具有 length 属性的对象不能被 jQuery.param 正确序列化
  • #7653 更改正则表达式以检测本地协议,以便它可以接受任何以 -extension 结尾的协议
  • #7668 Sizzle 和 jQuery QUnit 测试不同步
  • #7912 此更改使 .cur() 更加 .cssHooks 友好。如果 .cur() 不是数字、类似数字的值或需要回退到 0 的值,它现在将返回 .css() 未修改的值。
  • #7922 修复了在 IE 中,live(‘submit’) 先绑定时,live(‘click’) 不触发的错误
  • #7945 使 jQuery.param() 正确序列化具有名为 jquery 的属性的普通对象
  • #8033 jQuery 1.4.4+ 无法在具有旧的 Prototype (<= 1.5) 或 Current Prototype + Scriptaculous 的 IE 页面上加载
  • #8039 使用 HTML5 输入类型的选择器在 IE6/7 中无法正常工作
  • #8052 更新 jQuery.support.noCloneEvent 测试,使其在 IE9 中正常运行
  • #8095 正确处理需要绕过浏览器缓存但服务器端逻辑仍然提供正确的 304 响应的情况。已添加单元测试
  • #8098 在可用时使用快速的 document.head
  • #8099 始终根据元素的预期默认显示恢复到正确的显示值
  • #8107 修复 $.ajax 多个方法签名的参数处理,并添加测试用例
  • #8108 对使用 JSON.stringify 序列化时,jQuery 元数据暴露在普通 JS 对象上的临时修复,以避免破坏兼容性的更改。对此的正确修复将在 1.6 中发布
  • #8115 将代码中的所有 jXHR 引用重命名为 jqXHR(与文档中所做的一样)
  • #8123 .clone() 的默认行为是不克隆任何事件
  • #8125 当 location.protocol 为“file:”时,状态设置为 200 用于状态为 0 的请求。已添加 test/localfile.html 来控制它是否正常工作
  • #8129 修复了在 IE8 中克隆多个选定选项的问题
  • #8135 确保在尝试访问网络错误发生时 XMLHttpRequest 属性时,Firefox 抛出的任何异常都被捕获并报告为错误。已添加 test/networkerror.html 来测试此行为
  • #8138 仅在加载时访问一次 document.location,如果失败(在 document.domain 已经设置时,IE 中会抛出异常),我们将使用 A 元素的 href 代替
  • #8145 已添加 readyWait 测试
  • #8146 引入了 xhrFields 选项,它是一个用于在本地 xhr 上设置 fieldName/fieldValue 的映射。可以用来在需要时将 withCredentials 设置为 true 以进行跨域请求
  • #8152 对“chrome-extension:”协议应用与“file:”相同的特殊情况(需要测试)。重新组织并修复了 xhr 传输中对 HTTP 状态代码的特殊情况的处理
  • #8177 XHR 传输现在将 304 Not Modified 响应视为 200 OK,前提是没有提供条件请求头(根据 XMLHttpRequest 规范)
  • #8193 修复了预过滤器中的中止问题。即使全局选项设置为 true,也不会在那种情况下触发全局事件。已添加单元测试
  • #8198 删除不必要的“script.type = text/javascript;”
  • #8200 取消公开 $.support._scriptEval,因为它不再需要。使用私有变量代替
  • #8209 确保将鼠标悬停在 Chrome“内部 div”上不会触发 mouseleave
  • #8219 引入了 mimeType 选项,用于在转换中覆盖 content-type 标头(以及在可能的情况下,在本地 xhr 中)。在 jqXHR 对象上添加了配套的 overrideMimeType 方法(它只是设置了选项)
  • #8220 从标签名称过滤器中删除反斜杠
  • #8245 Ajax 现在确保标头名称是大写的,这样不符合规范的 xhr 实现就不会覆盖它们
  • #8250 ajax 在 opera 10 小部件中无法正常工作
  • #8277 将 data 设置为 undefined 而不是 null,如果它没有在 ajax 帮助程序中提供,以便它不会阻止在 ajaxSettings 中设置的 data 被使用。
  • #8297 确保正确处理具有空值的响应标头,并且不会阻止对整个响应标头字符串的正确解析。

jQuery 1.5 发布

发布日期 作者

jQuery 1.5 准时发布,可以开始使用了!

这个版本酝酿已久,是团队共同努力的结果。请借此机会感谢 jQuery 团队jQuery 错误排查团队 的帮助,他们让这个版本的发布成为可能。

下载

和往常一样,我们提供两个版本的 jQuery,一个是最小化的,一个是不压缩的(用于调试或阅读)。

您可以随意将上面的 URL 直接包含到您的网站中,您将获得快速加载 jQuery 的全部性能优势。

此外,您也可以直接从 Microsoft 和 Google 的 CDN 加载 URL。

Microsoft CDN: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.min.js

Google CDN: https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.5.0/jquery.min.js

关于版本发布

这个版本修复了 83 个错误,并总共关闭了 460 个工单

测试套件(目前包含 4437 个测试)在 jQuery 支持的所有浏览器中(以及更多浏览器)都通过了测试。我们验证了以下所有浏览器都通过了测试套件

  • Safari 5.0.3 / 4.0.5 / 3.2.3 / 3.1.2
  • Opera 11.01 / 11 / 10.63 / 10.54 / 10.10 / 9.64
  • IE 6 / 7 / 8
  • Firefox 4.0b9 / 3.6.13 / 3.5.11 / 3.0.19 / 2.0.0.20
  • Chrome 8.0.552.215 / 8.0.552.237 / 9.0.597.67 Beta / 10.0.642.2 Dev

此外,您可以在 API 网站上找到本版本的所有 API 文档:jQuery 1.5 API 文档

您可以在我们的 路线图 上找到即将发布的版本的完整时间表。目前,我们计划更频繁地发布主要版本的 jQuery(可能每年发布几次,而不是每年一次)。

那么,jQuery 1.5 都有哪些变化呢?

Ajax 重写

这个版本中最大的变化莫过于对 jQuery 中 Ajax 模块的彻底重写。重写解决了旧版 Ajax 系统中存在的许多缺陷,并提升了整个 API 的一致性。

可能最大的变化是,现在调用 jQuery.ajax(或 jQuery.get、jQuery.post 等)将返回一个 jqXHR 对象,该对象在所有平台上为 XMLHttpRequest 对象提供一致性(并允许您执行以前无法完成的任务,例如中止 JSONP 请求)。

有关新 jqXHR 对象的更多详细信息,请参阅 jQuery.ajax() 文档

除了更一致的 API 之外,Ajax 系统现在也更具可扩展性,允许您附加各种数据处理程序、过滤器和传输。这些更改将为能够利用这种可扩展性的新 Ajax 插件打开一个全新的领域。有关更多信息,请参阅 扩展 Ajax 文档。团队正在积极征求有关 Ajax 可扩展性 API 的反馈,如果您有任何反馈,请随时将其发送到 jQuery 开发论坛

延迟对象

除了重写 Ajax 模块之外,还引入了另一个新功能,该功能也已公开提供:延迟对象。此 API 允许您使用可能无法立即呈现的返回值(例如异步 Ajax 请求的返回值)。此外,它还允许您附加多个事件处理程序(这在以前的 Ajax API 中是不可能的)。

例如,现在可以使用 jQuery 的内部 Ajax API 实现以下操作

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });

此外,您可以使用公开的 jQuery.Deferred 创建自己的延迟对象。有关此 API 的更多信息,请参阅 延迟对象 文档。

Eric Hynds 编写了一篇关于 在 jQuery 1.5 中使用延迟对象 的好教程。

jQuery.sub()

jQuery 现在公开了一种新方法,您可以使用该方法创建和修改 jQuery 的克隆,同时仍然可以使用完整的 jQuery API。例如,您可以使用它来覆盖本机 jQuery 方法,而不会真正影响其他用户将与之交互的方法,甚至可以为您的插件创建封装的 API,以避免命名空间冲突。

以下是在 jQuery 子级中添加方法的示例,这样该方法就不会公开到外部

  (function(){
    var sub$ = jQuery.sub();

    sub$.fn.myCustomMethod = function(){
      return 'just for me';
    };

    sub$(document).ready(function() {
      sub$('body').myCustomMethod() // 'just for me'
    });
  })();

  typeof jQuery('body').myCustomMethod // undefined

有关 jQuery.sub() 的更多信息,请参阅 API 文档。

请注意,如果您想将它用于插件开发,您应该首先认真考虑使用 jQuery UI 小部件工厂,该工厂管理状态和插件子方法。 使用 jQuery UI 小部件工厂构建插件的一些示例

相邻遍历性能

在这个版本中,我们还能够提高一些常用遍历方法的性能:.children()、.prev() 和 .next()。我们看到的提速相当可观(可能快得多,具体取决于浏览器)。

.children() Performance in jQuery 1.5

.prev() Performance in jQuery 1.5

.next() Performance in jQuery 1.5

性能测试用例和原始数据

构建系统

最后,我们对 jQuery 的内部构建系统做了一些更改。我们努力将所有构建流程标准化到优秀的服务器端 JavaScript 环境:NodeJS。我们对此尤其感谢,因为我们能够减少对传统 Java/Rhino 系统的依赖,并将更多精力集中在新兴的 JavaScript 环境上。

此外,随着这种转变,我们已从 Google Closure Compiler 转向使用 UglifyJS。我们看到了一些可靠的文件大小改进,因此我们对这种转变感到非常满意。

谢谢!

与往常一样,我们要感谢所有为这个版本做出贡献的人,没有你们的贡献,这个版本就不可能发布。如果您有任何问题或发现任何错误,请将您的问题提交到 jQuery 错误跟踪器

jQuery 1.5 RC 1 发布

发布日期 作者

我们即将发布 jQuery 1.5 的最终版本,我们很高兴地宣布第一个候选发布版本!如果没有重大错误,这应该是我们最终为 jQuery 1.5 发布的代码(最终版本将于 1 月 31 日发布)。

最终的发布说明和文档将与最终的 1.5 版本一起提供。

jQuery 1.5 候选发布版本 1

您可以从 jQuery CDN 获取代码

您可以帮助我们,将该代码放到您现有的应用程序中,并告知我们,如果出现任何无法正常工作的情况。请 提交错误,并确保提到您正在针对 jQuery 1.5 RC 1 进行测试。

我们想鼓励社区中的每个人尝试 参与 回馈 jQuery 核心。我们设置了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队就在这里,随时准备帮助您帮助我们!

jQuery 1.5 Beta 1 发布

发布日期 作者

祝 jQuery 五周年生日快乐!jQuery 于 2006 年 1 月 14 日发布,今天是它开发的第五个年头!

为了庆祝这个日子,我们发布了 jQuery 1.5 的第一个测试版!我们计划 在 10 天内 发布一个最终的候选发布版本,并在月底之前发布最终版本。

我们还要宣布 jQuery 核心开发团队 的三位新成员:Julian Aubourg、Colin Snover 和 Anton Matzneller。这三位都为 1.5 版本的发布做出了重大贡献,提供了重要的代码贡献、错误修复和错误排查。请借此机会欢迎他们加入团队!

此外,我们还要借此机会感谢所有帮助我们发布这个测试版的 jQuery 社区成员,尤其是所有 错误排查团队 的成员。

我们想鼓励社区中的每个人尝试 参与 回馈 jQuery 核心。我们设置了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队就在这里,随时准备帮助您帮助我们!

话不多说,jQuery 1.5 Beta 1 出炉!

jQuery 1.5 Beta 1

您可以从 jQuery CDN 获取代码

您可以帮助我们,将该代码放到您现有的应用程序中,并告知我们,如果出现任何无法正常工作的情况。请 提交错误,并确保提到您正在针对 jQuery 1.5 Beta 1 进行测试。

jQuery 1.5 Beta 1 变更日志

这是简要的变更日志,完整的发布说明将与最终的 1.5 版本一起提供。

  • Julian Aubourg 重写了 Ajax 模块。这是这个版本中最重要的变化,为 $.ajax 带来了许多性能、稳定性和功能改进。有关更多信息,请参阅 这里 #7195
  • 现在支持 jQuery 中的子类化 #7901
  • 删除了在使用 noConflict() 时发生扩展冲突的可能性(V8 速度很快!)。扩展字符串现在使用随机数 + jQuery 版本来区分 jQuery 的实例,而不是毫秒时钟时间。 #6842
  • 在 $.get 和 $.post 中对代码进行去重。 #7847
  • 当本机浏览器事件在 DOM 中冒泡时,请确保 jQuery 的 Event 对象反映了正确的 isDefaultPrevented 值。 #7793
  • 不再在 buildFragment 中缓存非 html 字符串,以避免可能与 Object 方法(如 toString)的名称发生冲突。测试表明,这可能会带来适度的性能改进。 #6779
  • 更新了 cloneCopyEvent,以便在克隆元素时不会创建多余的数据对象。公开了一种新方法 $.hasData,用于确定对象是否包含任何数据。 #7165
  • 在复制事件时使用 for 循环而不是 for/in 循环,以便代码可以与增强的 Array.prototype 一起使用。 #7809#7817
  • 修复了 fadeIn 在内联元素中无法正常工作的问题。 #7397
  • 重写了 IE 的克隆函数,使其在所有已知情况下都能正常工作。 #4386#5566#6997
  • 修复了在普通 JS 对象上分派“submit”事件时 IE 崩溃的问题。 #6398
  • 修复了 1.4 中的回归问题,该问题导致脚本传输的缓存控制设置不正确。 #7578
  • 提高了 get() 对负索引的性能。 #5476
  • 如果属性包含回车符 (\r) 字符,则 hasClass、removeClass 在 IE 中无法正常工作。 #7673
  • 修复了 1.4.4 中的一个回归问题,即在非 DOM 元素上调用 $.fn.data 且不带参数时会出错。 #7524
  • 修复了 IE 中由 $.ajax 的自定义 abort 函数引起的内存泄漏。 #6242
  • 防止 live 事件在 IE 中的禁用元素上触发。 #6911
  • 修复了 1.4.3 中的一个回归问题,该问题导致将 Location 对象发送到 $.ajax 无法再正常工作。 #7531
  • 修复了某些遍历方法执行了不必要的唯一性检查的问题。 #7964
  • 现在支持指定回调函数以处理特定状态代码。 #4964
  • 修复了 ?? 未被支持作为 JSONP 请求回调函数名称的上下文无关占位符的问题。 #4897
  • 从 dataFilter 返回的数据未传递给 ajax complete() 回调函数。现在使用 jXHR 的 promise 接口获取实际响应。 #4825
  • 现在确保 buildFragment 在所有浏览器中正确克隆元素。 #6655#3879
  • 修复了在 IE8 中绑定自定义事件时发生的内存泄漏。 #7054
  • 表单数据中的行现在以 CRLF 分隔(如 W3C 建议)。 #6876
  • Ajax 请求现在在卸载时中止,以便仅在使用 xhr 传输时绑定事件。 #5280
  • 现在支持检测 =?,即使它在数据序列化过程中被转义。 #5812
  • 如果用户使用 jsonpCallback 设置,现在会自动将 dataType 设置为 'jsonp'。 #5803
  • crossDomain 选项现在强制 ajax 将请求视为跨域请求,即使它不是。这在服务器将重定向到跨域 URL 时很有用。 #5955
  • $.ajax(this) 允许重试,而不会出现 jQuery 1.4.3 中的递归错误。 #7461
  • 删除了针对早期版本的 Opera 9 的补丁,该补丁使动画值小于 -10000 时无法进行动画。 #7193
  • ResponseText 现在已针对错误回调函数正确传播。 #7868
  • 脚本 onload 处理程序将事件作为第一个参数传递,因此 statusText 现在作为第二个参数传递给中止。 #7865
  • 关于 xhr,将 contentType 设置为 false 现在将阻止发送 Content-Type 标头。 #7465
  • 在序列化文本时,现在根据 application/x-www-form-urlencoded 规范将所有换行符编码为 CRLF 对。 #6876
  • 修复了 IE6 中某些事件处理程序导致跨页面内存泄漏的错误。 #7762
  • 跨域检测测试现在包括检查协议、主机名和端口。 #7465
  • 修复了包含句点 ID 会导致 find() 无法返回结果的问题。 #7533
  • 已更正 next/adjacent 选择器在没有 ‘prev’ 元素的情况下无法正常工作的问题。 #7452
  • 修复了 1.4.3 中的回归问题,该问题阻止了在 nodeType 为 1 的 DOM 元素节点以外的其他节点上使用 attr() #7452#7500
  • 修复了在 IE8 中包含 jQuery 1.3.2 会导致屏幕右侧出现边框的错误。 #5575
  • 修复了将额外方法添加到 Array.prototype 并使用 jQuery.clone(true) 克隆元素导致事件绑定无效的问题。 #6355
  • 修复了 nth-child 在 Internet Explorer 中无法正确处理空格的问题。 #7558
  • 修复了在使用 live 事件时 mouseenter/leave 的行为类似于 mouseover/out 的错误。 #5821
  • 修复了 1.4.3 中的回归问题,该问题导致 eq() 选择器不再与 previous 和 adjacent 选择器一起使用。 #7906
  • 更新了有关 event.currentTarget 的文档,以解决有关 jQuery.proxy 的任何混淆。 #7628
  • 修复了 xhr.setRequestHeader('Accept',…) 将值追加而不是替换的问题。 #6230
  • 修复了 IE 中 ajax 方法无法处理以 '+xml' 结尾的 content type(例如 rss+xml)的问题。 #4958
  • 对 ajax 的更新现在允许中止任何请求。 #3442
  • 修复了 FireFox 3.6.11 中的 .slideUp() 问题,该问题以前隐藏了 frameset 边框和图例,但未覆盖其他元素的内容。 #7308
  • 现在支持跨浏览器 XML 解析。 #6693
  • 修复了在 .ajax() 方法中使用 dataType: 'json' 时,数据对象在 IE6 和 7 中未定义的错误。 #6106
  • 更正了 JSONP 调用在调用完成时未删除 script 标签的问题。 #7418
  • 更新了文档以反映在未指定持续时间的情况下使用 delay() 与 show() 时支持的行为。 #7543

jQuery 1.4.3 发布

发布于

jQuery 1.4.3 现已发布!这是在 jQuery 1.4 之上的第三个次要版本,修复了一些错误,并带来了一些不错的改进。

我要感谢以下社区成员,他们在本次发布中提供了补丁和意见:Anton M.、Justin Meyer、Colin Snover、Ryan Tenney、Louis-Rémi Babé、David Petersen、Rick Waldron、Dave Reed、John-David Dalton、temp01、Heungsub Lee、J. Ryan Stinnett、Robert Katic、Juriy Zaytsev、James Burke、Jeffery To、Carl Fürstenberg、Jacob Wright、Jeff Robinson、Christian C. Salvadó、Andrée Hasson、Jason Webster、Dave Furfero、Adam Sontag、Travis Hardiman、DBJDBJ 和 Ben Alman。

以及以下 jQuery 团队成员:Scott González、Brandon Aaron、Yehuda Katz、Dave Methvin、Karl Swedberg、Paul Irish、Ralph Whitbeck、Jörn Zaefferer、Richard Worth、Doug Neiner 和 Mike Alsup。

下载

和往常一样,我们提供了两个版本的 jQuery,一个最小化版(我们现在使用 Google Closure Compiler 作为默认最小化器),一个未压缩版(用于调试或阅读)。

您可以随意将上面的 URL 直接包含到您的网站中,您将获得快速加载 jQuery 的全部性能优势。

此外,您还可以直接从 Google 的 CDN 加载 URL

总体改进

我们对 jQuery 的内部结构以及我们用于开发的准则进行了一些改进。

JSLint

首先,jQuery 现在通过 Douglas Crockford 的 JSLint 工具。我们将他的工具集成到我们的工作流程中(从 Github 中检出 jQuery 并运行 'make lint' 将显示结果) - 使我们能够及时发现可能的回归问题。

我们对 JSLint 做了一些小改动以适应我们的特定开发风格,并在 jQuery Core Style Guidelines 中记录了结果。

模块化

我们还删除了 jQuery 源代码(在模块之间)中存在的许多相互依赖关系。这样做可以使从源代码使用 jQuery 副本时更加灵活。例如,您现在可以使用脚本加载器(如 LABjsRequireJS)动态加载单独的 jQuery 模块(例如,core、support、data 和 events)。

此外,这种更改使得不再需要构建 jQuery 副本才能运行 jQuery 测试套件。这极大地改善了我们的开发工作流程 - 使我们能够快速更改 jQuery 并测试结果,而无需进行(相对而言)缓慢的构建步骤。

新功能

所有新功能和更改可以在 jQuery API documentation for 1.4.3 中找到。

CSS 模块重写

几乎整个 CSS 模块都经过了重写,完全专注于可扩展性。您现在可以编写自定义 CSS 插件,以扩展 .css().animate() 提供的功能。

例如,以下是由 Louis-Rémi Babé 编写的插件,它利用了新功能:jQuery Rotate

该插件提供了一种跨浏览器的方式来设置和动画化 DOM 元素的旋转,只需使用传统的 jQuery 方法即可,如下所示

$('#myDiv').css('rotate', 90);
$('#myDiv').animate({rotate: 180});

在重写过程中,我们将 jQuery 中包含的功能分解为两个非常清晰的路径:获取和设置元素的 .style 属性(通过 jQuery.style 完成)以及获取元素的当前计算样式信息(通过 .css() 和 jQuery.css 完成 - 请注意,jQuery.curCSS 不再使用,并因此被弃用)。.css() 提供的功能同时使用 jQuery.style 和 jQuery.css 方法。

进行这种更改使计算样式检索速度加快,并且产生了快至 20% 的结果。

jQuery 1.4.3 .css() Getting a Value

所有性能测试的原始数据可以在 以下 Google Doc Spreadsheet 中找到。所有测试都可以在 jQuery 源代码库 中找到。

数据

数据模块已经过了一些改进,极大地提高了它的实用性。

HTML 5 data- 属性

首先,jQuery Metadata 插件提供的主要功能已移至核心。HTML 5 data- 属性 将自动被拉入 jQuery 的数据对象中。

例如,给定以下 HTML

<div data-role="page" data-hidden="true" data-options='{"name":"John"}'></div>

以下所有 jQuery 代码都将正常工作。

$("div").data("role") === "page";
$("div").data("hidden") === true;
$("div").data("options").name === "John";

请注意,字符串保持原样,而 JavaScript 值将转换为其关联的值(包括布尔值、数字、对象、数组和 null)。

data- 属性在首次访问数据属性时被拉入,并且不再被访问或修改(所有数据值都存储在 jQuery 的内部)。

JavaScript 对象

当在 JavaScript 对象(更准确地说,任何不是 DOM 节点的对象)上使用 .data() 时,对它的使用方式做了一些更改。从现在开始,无论何时你在 JavaScript 对象上设置数据,数据都会直接设置到对象上 - 而不是进入内部数据对象存储。此外,附加到对象的事件将被放入一个名为“__events__”的新属性中,它实际上是一个函数。这样做是为了允许将事件直接附加到对象,并在对象被回收时被垃圾回收,并且不会被 JSON 序列化器序列化。这些更改应该使 jQuery 的数据和事件系统在 JavaScript 对象上更有用。

活动

jQuery 已经有了 setData 和 getData 事件(这些事件在每次通过 .data() 方法设置或获取数据时都会广播) - 覆盖这些方法可以覆盖这些功能的默认行为(也就是说,你可以返回一个不同的值或阻止设置一个值。请注意,在 jQuery 1.4.3 中,这些事件不再冒泡(允许它们冒泡在大多数应用程序中被证明是成本太高了)。

在 1.4.3 中,我们引入了一个名为 changeData 的新事件。当使用 .data() 更改任何单个数据属性时,就会触发此事件。例如

var user = new User();
$(user).bind("changeData", function( event, name, value ) {
  $("#user").find("#" + name).val( value );
});

changeData 事件被新 jQuery 数据链接 插件广泛使用。它使数据 API 能够同步设置 JavaScript 对象属性和表单字段。

杂项

在 1.4.3 中,对 .data() 做了一个小的 API 更改:调用 .data(Object) 不再完全替换数据对象,而是扩展现有对象,保留未指定的值。我们发现,根据一些令人困惑的错误报告,这是预期结果。

遍历

几乎所有主要遍历方法的性能都得到了大幅提升。.closest()、.filter()(以及由此产生的 .is())和 .find() 都得到了极大改进。

这些改进主要是由于更多地使用了浏览器的 querySelectorAll 和 matchesSelector 方法(如果存在)。jQuery 项目请求浏览器添加新的 matchesSelector 方法(编写测试套件,与供应商交谈,并提交错误),现在整个社区都能从优异的性能优势中受益。

jQuery 1.4.3 .closest() Performance

jQuery 1.4.3 .filter() on a Single Element

jQuery 1.4.3 .find() on an element

所有性能测试的原始数据可以在 以下 Google Doc Spreadsheet 中找到。所有测试都可以在 jQuery 源代码库 中找到。

以上性能结果专门针对 jQuery 代码中的三个非常常见的用例:在一个 DOM 节点上使用 .closest(),在一个 DOM 节点上使用 .filter()(或 .is()),以及在一个 DOM 元素(例如 $(“#test”).find(“something”))上使用 .find()。

请注意,显示的浏览器是那些实际支持 querySelectorAll 或 matchesSelector 的浏览器 - 不支持这些方法的现有浏览器将继续具有相同的性能特征。

Ajax

添加了一些新的 Ajax 功能,这些功能应该可以帮助插件作者和那些构建渐进增强型应用程序的人。

引入了新的 jQuery.readyWait 属性,当它被添加时,会延迟 ready 事件的执行。插件应该使用此属性,以延迟 ready 事件的发生,直到指定的时间。例如,RequireJS 已经实现了此属性的使用,允许你在 ready 事件触发之前加载应该处理的依赖项。无论何时一个项目完成加载,你都应该调用 jQuery.ready(true)(如果所有依赖项都已完成加载 - 并且 DOM 已准备就绪 - 那么 ready 事件将被触发)。

我们还添加了一个新的支持属性:jQuery.support.ajax。简而言之,它在能够处理“Ajax”(XMLHttpRequest)请求的浏览器中返回 true。

活动

.bind(“click”, false) 和 .unbind(“click”, false)

绑定一个除了返回 false 之外什么也不做的函数的便捷快捷方式(阻止默认操作并停止事件冒泡)。

.click(data, fn)

所有内置的事件方法(如 .click())现在都接受数据作为初始参数(就像 bind 方法一样)。

event.namespace

事件对象的新的属性,包含传递给 .trigger() 的事件命名空间。

效果

.show(speed, easing, callback) 等。

所有动画方法现在都支持 easing。就像 .animate() 如何支持 easing 参数(供 easing 插件使用)一样

jQuery.fx.interval

一个新的属性,它公开了所有效果触发的速率(以毫秒为单位 - 默认值为 13)。将此数字变小会在某些浏览器(如 Chrome)中使动画更流畅,但会以 CPU 为代价。

杂项

jQuery.type

确定对象的内部 JavaScript [[Class]]。使用许多不同的方面来确定对象的精确返回值。逻辑可以确定如下

  • 如果对象是未定义或空值,则分别返回“未定义”或“空值”。
  • 如果对象具有与浏览器内置对象之一等效的内部 [[Class]],我们将返回关联的名称。(有关此技术的更多详细信息。
    • jQuery.type(true) === “boolean”
    • jQuery.type(3) === “number”
    • jQuery.type(“test”) === “string”
    • jQuery.type(function(){}) === “function”
    • jQuery.type([]) === “array”
    • jQuery.type(new Date()) === “date”
    • jQuery.type(/test/) === “regexp”
  • 其他所有内容都将返回“object”作为其类型。

jQuery.isWindow

一种简单的方法,用于确定对象是否可能是一个窗口。

jQuery.isWindow(window); // true

此外,我们现在使用 he 本地 Array.isArray 方法用于 jQuery 的 isArray(如果可用),并且我们使用浏览器提供的本地 String trim 方法(同样,如果可用)。jQuery.trim 做了许多性能改进,详细信息请参见 以下线程

测试

jQuery 1.4.3: Passing 3621 Tests in All Browsers

jQuery 1.4.3 在所有支持的浏览器上通过了 3621 个测试。我们在 Firefox 4 上 100% 通过,在 IE 9 上几乎通过(我们发现了两个错误,提交了错误,其中一个已经被修复)。

jQuery 1.4.3 发布候选版 2 发布

发表于

jQuery 1.4.3 发布候选版 2 已发布!这是 jQuery 1.4.3 的第二个发布候选版。代码稳定(在我们支持的所有浏览器中通过所有测试),功能完整(我们不再接受该版本的新功能),并且需要在实际应用程序中进行测试。

获取代码

注意:如果你正在使用 jQuery 1.4.3rc2,并且遇到错误,请确保你正在使用代码的常规版本,这样更容易发现错误发生的位置。

我怎样才能帮助?

首先,尝试将上述未压缩版本的 jQuery 1.4.3rc2 放入你正在运行的实际应用程序中。如果你遇到异常或出现一些奇怪的情况,请立即登录错误跟踪器并 提交错误请务必提及你在 jQuery 1.4.3rc2 中遇到了这个错误!

我们将密切关注收到的错误报告,并努力解决 jQuery 1.4.2 和 jQuery 1.4.3 之间的任何不一致。

有关 1.4.3 版本的更多详细信息,请参见先前关于 jQuery 1.4.3rc1 的文章。

jQuery 1.4.3 发布候选版 1 发布

发表于

jQuery 1.4.3 发布候选版 1 已发布!这是 jQuery 1.4.3 的第一个发布候选版。代码稳定(在我们支持的所有浏览器中通过所有测试),功能完整(我们不再接受该版本的新功能),并且需要在实际应用程序中进行测试。

获取代码

注意:如果你正在使用 jQuery 1.4.3rc1,并且遇到错误,请确保你正在使用代码的常规版本,这样更容易发现错误发生的位置。

我怎样才能帮助?

首先,尝试将上述未压缩版本的 jQuery 1.4.3rc1 放入你正在运行的实际应用程序中。如果你遇到异常或出现一些奇怪的情况,请立即登录错误跟踪器并 提交错误请务必提及你在 jQuery 1.4.3rc1 中遇到了这个错误!

我们将密切关注收到的错误报告,并努力解决 jQuery 1.4.2 和 jQuery 1.4.3 之间的任何不一致。

需要注意的地方

自 1.4.2 发布以来,jQuery 中的一些区域发生了重大变化

  • .css() 和相关的 css 处理方法都被彻底修改了。
  • 用于确定元素可见性和动画代码中显示切换的逻辑。
  • 大部分遍历逻辑都得到了改进和更改(is、filter、closest、find)。

有关该版本的完整细节即将发布 - 现在我们只需要你的帮助来捕获回归。

有了你的投入,我们应该能够发布一个稳定的版本。现在我们希望在接下来的周末在波士顿举行的 jQuery 大会上发布最终的 1.4.3 版本。感谢你帮助审查 jQuery 1.4.3rc1!

新的官方 jQuery 插件提供模板、数据链接和全球化

发表于

随着 jQuery 项目的发展,开发者社区的需求也随之增长。作为一个项目,我们专注于构建尽可能好的功能,并以可靠和开放的方式提供它们。与大多数开源项目一样,我们能够提供的软件在很大程度上要归功于许多志愿者的慷慨,他们贡献了自己的时间和编码技能,使 jQuery 和 jQuery UI 成为现今最广泛使用的 JavaScript 库之一。

3 月份,我们在 MIX 2010 上宣布微软承诺通过代码贡献和资源支持 jQuery 项目。此后不久,微软便发布了他们的第一个 jQuery 插件,供公众审查,该插件为 jQuery 社区提供了客户端模板功能。紧随其后的是他们的第二个插件 jQuery 数据链接,它提供了数据同步功能,最近推出了 jQuery 全球化插件,该插件为超过 350 种文化(从苏格兰盖尔语、弗里斯兰语、匈牙利语、日语到加拿大英语)的 JavaScript 应用程序提供全球化信息。

在七个月的开发过程中,jQuery 和微软团队紧密合作,确保代码符合 jQuery 项目指定的最佳实践,并满足 jQuery 社区的特定需求。我们还确保贡献的任何代码都将以与 jQuery JavaScript 库相同的非限制性许可条款提供给 jQuery 社区。

官方 jQuery 插件

今天,我们非常高兴地宣布,以下微软贡献的插件 - jQuery 模板插件jQuery 数据链接插件jQuery 全球化插件 - 已被接受为 jQuery 项目的正式支持插件。作为支持的插件,jQuery 社区可以确信这些插件将继续得到增强,并且与未来版本的 jQuery 和 jQuery UI 库兼容。

jQuery 模板和 jQuery Datalink 插件将由 jQuery 核心团队管理,而 jQuery 全球化插件将成为 jQuery UI 项目的一部分,为我们丰富的 UI 库提供扩展的全球化功能。此外,jQuery 模板插件中的功能将从版本 1.5 开始直接集成到 jQuery 核心库中。

文档和教程

为了帮助您立即使用这些插件,我们提供了 API 文档和教程,帮助您快速上手这些新技术。

API 文档

教程

可供下载

新插件的源代码可以在 Github 上找到,我们鼓励社区评估和增强功能。新插件可以立即下载,代码可以在这里找到

jQuery 模板http://github.com/jquery/jquery-tmpl
jQuery Datalinkhttp://github.com/jquery/jquery-datalink
jQuery 全球化http://github.com/jquery/jquery-global

新的贡献方式

我们要感谢 微软 对帮助 jQuery 项目并为 jQuery 库提供新功能的承诺。这对两个团队来说都是一次有意义的经历,为未来的合作奠定了基础,并为满足 jQuery 社区的需求开辟了一条新道路。

请务必阅读微软的联合公告,概述了该项目的历史以及这些贡献对微软和 jQuery 社区的重要性

jQuery 模板、数据链接和全球化被接受为官方 jQuery 插件 – Scott Guthrie,微软开发部门副总裁

jQuery 模板现在是官方的 jQuery 插件 – Boris Moore,微软

jQuery 模板在野 – James Senior,微软

Web Camps TV #5 – 微软将代码提交给 jQuery!
– Channel 9 视频

微软将扩大其与 jQuery 社区的合作

发布于 作者

jQuery 项目很高兴地宣布,微软正在通过新的举措扩大其对 jQuery JavaScript 库的支持,包括代码贡献、产品集成和分配更多资源。

在与 jQuery 项目合作两年的基础上,微软今天在 MIX 2010 上宣布,将与 jQuery 核心团队和社区合作,提供源代码,以帮助进一步推进 jQuery JavaScript 库。计划的贡献针对双方共同关注领域中的特定功能。它们包括

  • 模板
  • 脚本加载
  • 数据绑定

最初的重点将是一个新的模板引擎,它将允许通过定义的模板轻松灵活地进行数据渲染。微软已提交 公开审查的提案 以及 实验性插件,并积极与 jQuery 团队和社区合作进行统一实施。模板引擎将被审查并考虑是否纳入 jQuery JavaScript 库或作为官方 jQuery 插件维护。

微软还将在 Visual Studio 2010 和 ASP.NET MVC 中发布 jQuery JavaScript 库的当前版本,并继续在微软 CDN 上托管库的当前版本。

最后,微软将提供资源,以协助对新环境中的 jQuery 进行 QA 测试,以确保库的持续稳定性和持久性。

我们认为这些贡献将极大地有利于 jQuery 的努力和社区,并期待与微软继续合作。