jQuery 社区 2010 年 12 月更新
欢迎来到 12 月的 jQuery 社区更新。我们希望您与家人度过了一个愉快的假期,并祝愿社区中的每个人新年快乐!
在今天的文章中,我们将介绍 jQuery Core 和 jQuery UI 的更新。我们希望您能对此发表评论和反馈!
通往 jQuery 1.5 的道路
jQuery 团队本月一直在努力准备 jQuery 1.5 的发布。此版本中的一些更新代表着我们对稳定性和一致性的持续承诺,通过错误修复和浏览器行为规范化来实现,而其他更新则是重要的重写,将提高库的性能、可维护性和多功能性。
发生了什么变化?
您可以在本文的“更改日志”部分找到我们所做更改的完整列表。目前可用的最大更新是我们的新重构的 $.ajax 组件,由其作者 Julian Aubourg 在下面解释。
您在 ajax 组件中看到的第一个变化可能是新的签名:
jQuery.ajax( [ url ] , [ options ])
。这使我们能够更轻松地使用默认选项获取 URL。当然,这仅仅是冰山一角,因为整个组件从头开始重写,以提供许多新功能。现在每种请求类型都支持超时和中止。本机 XHR 对象现在对开发者隐藏,并提供了一个具有相同基本接口的新 jQuery 特定对象作为替换。此“jXHR”对象提供通常的属性和方法来设置和获取标头、中止请求以及查看 readyState、responseXML 和 responseText——但与本机 XHR 对象不同,它也充当 Promise。Promise 允许您添加成功、错误或完成回调,即使在请求完成 **之后**;例如,现在可以编写诸如
jQuery.getJSON( url ).error( errorCallback )
之类的内容,它始终有效,无论原始请求的状态如何。在内部,新的 ajax 组件采用可插拔的架构,这使得定义新的自定义 dataType 和 transports 变得容易。自定义 dataType 允许您为应用程序代码提供一致的响应对象,无论原始数据格式如何,自定义 transports 允许您执行诸如为测试模拟 ajax 请求、使用特定于浏览器的网络对象(如 XDomainRequest)或使用完全不同的机制执行远程调用(如 iframe 或 postMessage)之类的事情,而无需编写大量代码。最棒的是,任何此类添加都可以立即访问 jQuery.ajax 的全部功能(参数序列化、超时、延迟回调等),并且使用您已经熟悉的 $.ajax API 公开给应用程序代码。
最后,现有 ajax 选项添加了一些灵活性,也添加了新的选项。例如
- 您可以为成功、错误或完成提供回调数组。非函数将被过滤,数组将被扁平化,因此您可以通过简单地执行
options.complete = [ yourCompleteCallback , options.complete ]
来轻松地将完成处理程序添加到所有其他处理程序之前!- 新的“headers”选项使设置请求标头的映射成为可能,从而避免了仅为设置标头而需要 beforeSend 回调的麻烦。
我们非常小心地确保现有单元测试通过,并且添加了许多其他测试,以帮助确保一切按预期运行,并且不会破坏现有代码。
我如何提供帮助?
与往常一样,我们希望邀请社区贡献新的补丁或帮助我们测试更改,以便我们能够尽快识别和纠正任何问题。
要执行测试,只需将 jQuery 的开发版本(jQuery-GIT) 放入现有应用程序副本中。如果您遇到异常或出现某些奇怪的现象,请登录错误跟踪器并 提交错误。**请务必将版本下拉列表设置为“git”。** 您还可以通过在侧边栏中选择“jQuery 0 GIT”从下拉菜单中测试 jsFiddle 上的代码。
要贡献补丁,Rick Waldron 编写了一份关于 jQuery 错误修复指南 的优秀指南,介绍了如何开始使用 git、构建和测试 jQuery 以及如何寻找新的错误来解决。如果您打算提交补丁,您还应该加入 Freenode 上的 #jquery-dev 频道,大多数关于 jQuery 开发的讨论都在这里进行。
当前更改日志
- 1. Julian Aubourg 重写了 Ajax 模块。这是此版本中最重大的更改,为 $.ajax 带来了许多性能、稳定性和功能改进。更多信息可在上面找到。 #7195
- 2.jQuery 现在将自己注册为一个 CommonJS 异步模块。这使 jQuery 可以使用兼容的加载器(如 RequireJS 和 Yabble)参与浏览器模块加载。 #7102
- 3.删除了使用 noConflict() 时 expando 冲突的可能性(V8 速度很快!)。expando 字符串现在使用随机数 + jQuery 版本来区分 jQuery 的实例,而不是毫秒时钟时间。 #6842
- 4.对 $.get 和 $.post 中的代码进行了去重。 #7847
- 5.当本机浏览器事件在 DOM 中冒泡时,确保 jQuery 的 Event 对象反映了正确的 isDefaultPrevented 值。 #7793
- 6.不再在 buildFragment 中缓存非 html 字符串,以避免与 Object 方法(如 toString)的名称发生可能的冲突。测试表明,这也可以提供适度的性能改进。 #6779
- 7.更新了 cloneCopyEvent,使其在克隆元素时不会创建多余的数据对象。公开了新的方法 $.hasData,用于确定对象是否包含任何数据。 #7165
- 8.在复制事件时使用 for 循环而不是 for/in 循环,以便代码适用于增强的 Array.prototype。 #7809, #7817
- 9.修复了 fadeIn 在内联元素上无法正常工作的问题。 #7397
- 10.重写了 IE 的克隆函数,使其在所有已知情况下都能正常运行。 #4386, #5566, #6997
- 11.修复了 IE 在普通 JS 对象上分派“submit”事件时崩溃的问题。 #6398
- 12.修复了 1.4 中导致脚本传输的缓存控制设置不正确的回归。 #7578
- 13.提高了 get() 在负索引上的性能。 #5476
- 14.如果属性包含回车符(\r)字符,hasClass、removeClass 在 IE 中不起作用。 #7673
- 15.修复了 1.4.4 中的回归,其中在非 DOM 元素上调用 $.fn.data 而不带参数会导致中断。 #7524
- 16.修复了 IE 中由 $.ajax 的自定义中止函数引起的内存泄漏。 #6242
- 17.防止在 IE 中的禁用元素上触发实时事件。 #6911
- 18.修复了 1.4.3 中的回归,该回归导致将 Location 对象发送到 $.ajax 无法正常工作。 #7531
jQuery UI 1.8.7 和 Spinner、Menu 和 Tooltip
jQuery UI 团队也一直在努力开发新功能。以下是他们的更新。
自上次社区更新以来,jQuery UI 1.8.7 已发布。这带来了对 jQuery 1.4.4 的支持,但也为 Button、Progressbar 和 Datepicker 提供了值得注意的更新。有关此版本的完整详细信息,请阅读 jQuery UI 1.8.7 版本说明。
此外,三个新插件刚刚登陆 jQuery UI 主分支,由 Jörn Zaefferer 提供:Spinner、Menu 和 Tooltip。这三个小部件已经开发了一段时间,每个小部件都有自己的里程碑版本。有关这些新小部件的更多信息,您可以在上面它们各自的版本页面上阅读。我们希望邀请社区测试并提供对这些新小部件的反馈,如果您发现任何需要报告的错误或问题,可以在 jQuery UI 开发中心 找到操作说明。
每周 jQuery 开发会议
从 2011 年 1 月 4 日开始,我们将试行每周在 freenode 上的 #jquery-meeting 频道举办一次 jQuery 开发会议,核心开发者和贡献者都参加。这些会议的议程将提前发布,任何希望参加 jQuery 社区的成员都非常欢迎。我们的第一次会议将于 1 月 4 日星期二美国东部时间晚上 9 点举行,讨论主题将是 jQuery 1.5 路线图、票务分类和基础设施讨论。此会议的完整议程可以在 这里 找到。
jQuery Podcast 上的 Wijmo
对于 官方 jQuery Podcast 的粉丝,我们想提醒您,第 40 集 现已开放流媒体播放或下载。在这一集中,我们与 ComponentOne 的 Chris Bannon 讨论了名为 Wijmo 的基于 jQuery UI 的新库。
捐赠
jQuery 是否让您的开发生活变得更轻松?如您所知,jQuery 是一个开源项目,依靠我们宝贵的志愿者和社区成员的时间和努力,完全由公众捐款资助。如果您发现 jQuery 对您有所帮助,我们希望谦卑地请求您考虑捐款(即使是 10 美元也有很大帮助)。jQuery 项目是软件自由保护组织的一部分,因此您做出的任何捐款都是完全免税的。有关财务捐款的更多信息,请访问 http://jquery.org/donate。
如果您不能捐款,我们总是需要有才华的软件开发人员、IT 专业人员和各种类型的极客来帮助开发和维护 jQuery 及其相关属性。如果您有兴趣贡献一些时间来帮助提升 jQuery,请与 团队成员 联系,或在 Freenode 上的 #jquery 频道提问。
这就是本次更新的全部内容!感谢您的阅读;我们期待您的反馈。
当我尝试使用 ajax 做这件事时,我发现即使在通过 ajax 调用的 php 文件中包含了相应的 css、js 文件,样式和复选框也消失了。
这是一个错误吗?
jquery ui 自定义下载至少已经有一整天无法使用。有人知道并且正在解决吗?
@Ian,对我来说似乎工作正常。
具体来说,选择 core、widget、mouse 和 slider (1.8.7) 然后点击“下载”会导致大约 50k 的传输,然后传输会停止,留下一个损坏的 zip 文件。
不知道是不是 Ian,但昨天在 #jquery 聊天室里有人也报告了同样的错误。
开发会议的记录会发布吗?
@J Schild - 我们还没有完全确定发布方式,但主题及其相应的结论/要点将发布。
是否有计划发布 1.4.5 版本?错误 #7500 对我的项目来说是一个真正的阻碍。
感谢你们的辛勤工作!
我也遇到问题单 7618。:(
谢谢!
@Johannes Geppert: 我们只有在 1.5 版本的发布计划看起来要推迟的情况下才会发布 1.4.5 版本。否则,开发团队目前正专注于发布 1.5 版本。您可以在错误跟踪器中查看路线图以获取更多信息。