jQuery 1.7 Beta 1 发布

发布于 作者:

如果您还没有听说,jQuery Conference 2011 将于本周晚些时候在波士顿举行。我们准备了一些我们喜欢称之为 jQuery 1.7 Beta 1 的东西,我们将在会议上对此进行大量讨论。它包含了一堆新的功能和重要的错误修复——最后统计时超过 50 个。

您可以从 jQuery CDN 获取 Beta 版本

请帮助我们,将此代码放入您现有的应用程序中,并告诉我们是否有任何功能不再起作用。请 提交错误报告,并确保说明您正在测试 jQuery 1.7 BETA 1。

同时,请务必探索所有新功能,并查看您最讨厌的错误是否已修复。如果您等到最终版本再进行测试,就太晚了!

与往常一样,我们希望鼓励社区中的每个人尝试 参与并为 jQuery 核心做出贡献。我们建立了一个 完整页面,专门介绍如何更多地参与团队工作。团队随时准备帮助您帮助我们!

哦,您可能想知道发生了什么变化,对吧?Addy Osmani 已经用他的 最新文章做了一个很好的开始,所以让我们来介绍一下他的文章中没有的内容。

新的事件 API:.on().off()

随着时间的推移,jQuery 演化出了三种将事件附加到元素的方法:.bind().live().delegate()。然而,在所有这些之下,这三个事件 API 都会调用浏览器的事件系统;这可能会导致令人惊讶的交互。例如,$(document).unbind("click") 将删除所有 .live("click", ...) 事件,因为这些委托事件附加到 document。(这也是为什么您应该使用 事件命名空间。)

我们当前的事件 API 很快就不会消失了,但为了解决这些不一致性,我们引入了一对新的简单事件方法,可以完成所有三个方法的工作

    $(elems).on(events, selector, data, fn);
    $(elems).off(events, selector, fn);

如果提供了 selector,则是一个委托事件;否则,直接绑定。旧 API 的所有功能都在那里;例如,events 可以是空格分隔的事件名称和/或命名空间的字符串,也可以是一个对象,其中键是事件,值是事件处理程序函数。以下是一些旧方法映射到新方法的示例

旧 API 新 API
$(elems).bind(events, fn) $(elems).on(events, fn)
$(elems).bind(events, { mydata: 42 }, fn) $(elems).on(events, { mydata: 42 }, fn)
$(elems).unbind(events, fn) $(elems).off(events, fn)
$(elems).delegate(selector, events, fn) $(elems).on(events, selector, fn)
$(elems).undelegate(selector, events, fn) $(elems).off(events, selector, fn)
$(selector).live(events, fn) $(document).on(events, selector, fn)
$(selector).die(events, fn) $(document).off(events, selector, fn)

IE 6/7/8 中的表单更改和提交事件

这些旧版本的 Internet Explorer 可能还会困扰我们一段时间,因此我们花了一段时间来尝试改进它们的行为。对于它们,事件传递性能得到了极大的提高,但最大的变化是我们使用不同的方法来修复它们的非冒泡和损坏的表单事件。因此,我们能够大大简化和缩短特殊事件代码。这些事件应该可以正常工作——甚至比以前更好,因为我们修复了大约半打相关的错误——但请留意任何异常行为。

动画改进

在 1.7 版本之前,如果您在动画完成之前停止了动画,可能会导致被动画化的元素永远无法恢复到其原始大小;它基本上会卡在动画停止时的高度。我们通过记住动画开始前的原始尺寸来修复了这个问题,以便稍后可以使用它们。这消除了在使用某些动画(特别是切换动画)时的一个主要烦恼。

.removeData() 增强功能

Addy 也提到了这一点,但 .removeData() API 现在允许您传递一个空格分隔的名称字符串或一个要删除的名称数组。由于之前允许在数据名称中使用空格,因此代码首先检查您指定的确切名称,然后再按空格分割字符串。这样,任何现有代码都不会因为此增强功能而中断。

jQuery 1.7 BETA 1 变更日志

这是 1.7 BETA 1 版本的完整更改列表。

Ajax

  • #9399:弃用 jqXHR.success 和 jqXHR.error

属性

  • #5479:removeAttr:移除多个属性
  • #10278:checkboxEl.attr(‘checked’) 在 checkboxEl.click() 之后返回陈旧的值

核心

  • #6485:IE 中的 HTML5 解决方案
  • #7102:将 jQuery 注册为 CommonjS 异步模块
  • #9453:$.inArray 不支持 fromIndex

Css

  • #10267:IE8 和 window.is(‘:visible’) 崩溃

数据

  • #7323:允许使用 $.fn.removeData 一次移除多个数据键
  • #8909:$(element).data() 会扫描比需要的更多的属性。
  • #8921:jQuery 私有数据应保持私有

Deferred

  • #8856:请求:deferred.isUnresolved()
  • #9033:try{ } finally{ } 在 IE8 中出现错误
  • #9398:改进 Deferreds 的建议

Effects

  • #5684:效果:动画回调中的异常导致无限循环
  • #6150:.stop 有时无法清除 .delay
  • #6641:在动画完成回调中调用 stop() 会导致其他动画冻结
  • #8685:动画应跟踪动画状态,以便正确处理堆叠动画
  • #9280:允许为 animate() 使用多个效果队列
  • #9548:animate 不适用于 svg 元素的 fill-opacity css 属性

事件

  • #3368:event.metaKey 应仅在非 Mac 上分配给 event.ctrlKey
  • #6170:jQuery(window).scroll(); 会导致 IE* 滚动到 0,0
  • #6319:在 IE 中,change 处理程序内的 stopPropagation 会错误地应用于 keydown 事件
  • #6386:支持通过“event.special.live.add”获取 live 事件的数据参数
  • #6593:IE8:通过 jQuery 附加的 DOM 0 事件处理程序在单独的处理程序时会被调用两次
  • #6667:在某些条件下,submit 事件在 IE* 中无法委托
  • #6705:focus() 在 IE8 中导致 focus 事件被处理两次
  • #6903:特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定的
  • #6942:JQuery.event.fix 会导致在处理关键事件时出现不必要的重绘
  • #7139:“hover”事件别名应适用于 .bind 以及 .live
  • #7161:表单元素上的提交事件在 IE 中未正确解绑
  • #7444:使用“Enter”而不是按钮单击提交表单时,IE8 或 IE7 会触发 live 提交事件两次。
  • #8157:聚焦一个已经聚焦的文本字段会阻止 change 事件在 IE 中触发
  • #8728:当离开的元素被移除时,mouseenter 事件不会触发
  • #8789:Meta:事件属性挂钩
  • #8858:特殊事件 – _default 方法无法访问 trigger 方法的数据参数
  • #8866:IE8 input[type=file] 委托的 change 事件文件仅在 blur 时触发
  • #8982:bind(“unload someOther”) => 在卸载时,处理程序不会只执行一次。
  • #9069:当鼠标悬停在元素的子元素上时,使用 live 或 delegate 会触发 mouseleave
  • #9279:delegate() bind 无法正确处理所选元素的 mouseover/mouseout 和 mouseenter/mouseout
  • #9393:统一和简化事件系统
  • #9593:在 IE 中,委托的 submit 事件不是 jQuery.Event 的实例
  • #9724:当 window.parentNode 是 DOM 元素时,trigger 函数中出现无限循环
  • #9901:使用 .delegate 时 event.handleObj.namespace 不正确
  • #9933:jQuery.fn.toggle() 应将状态存储在私有数据对象中
  • #9951:在处理程序中修改 DOM 时,.trigger() 的顺序错误

操作

  • #6782:小心允许更多字符串使用 innerHTML
  • #7037:克隆元素时添加了重复的 mouseover 和 mouseout 事件。

选择器

  • #5637:布尔值(和空)属性选择器失败
  • #7128:由于使用 DOM 属性,属性选择器在 qSA 和 Sizzle 之间不一致
  • #9261:Has Attribute 在 filter/children/siblings 中不起作用
  • #9570:选择器 $(‘form[name=”..”]’) 在某些条件下在 IE8 中返回零个元素
  • #10178:$(window).is(“a”) >> 未捕获的 TypeError:无法对未定义的调用方法 ‘toLowerCase’
  • #10315:Sizzle 在使用位置选择器时忽略 seed 参数

支持

  • #6809:添加 jQuery.support.fixedPosition

刚刚添加:jQuery Conference Boston 上的 HTML5 培训!

发布于 作者:

更新:有史以来第一次,我们有一个会议标牌赞助商。感谢 定制标牌商店 Signazon 的支持。


波士顿会议已售罄(感谢大家!),入门 jQuery 培训课程也已售罄,但请求仍在不断涌入!响应大家的强烈要求,我们添加了第二个培训课程,定于 9 月 30 日星期五举行

培训将重点介绍 HTML5,由 jQuery 核心团队成员兼 Bocoup 培训师 Richard Worth 授课。价格将与之前的 299 美元相同(如果您一直在关注 HTML5 培训费率,这绝对是一笔划算的交易!)。

以下是培训描述中的一些详细信息

HTML5 是 HTML 的下一个重大里程碑,它不仅仅是另一个增量增强;它代表了现代 Web 应用程序的巨大进步。大量 HTML5 功能已经在浏览器中得到支持,因此现在是时候开始使用它们了!

在我们的 HTML5 程序员工作坊中,您将学习如何使用语义 HTML5 标记和跨浏览器 HTML5 JavaScript API 创建 HTML5 Web 页面和 Web 应用程序。完成本课程后,学生将

  • 了解如何使用语义 HTML5 标记
  • 了解如何使用跨浏览器 HTML5 JavaScript API
  • 了解当前浏览器对各种 HTML5 功能的支持
  • 了解如何在旧浏览器上填充 HTML5 功能

我们的培训采用循序渐进的方法,巩固基本概念并在其基础上进行构建,使每位学员都能更透彻地理解 HTML5。采用 50% 讲座 / 50% 实验的模式,学员可以在学习每个部分后立即应用所学概念。

  • HTML5 概述
  • 今天使用 HTML5
  • 标记
  • 表单
  • Canvas
  • 视频和音频
  • 拖放
  • 地理位置
  • Web 存储
  • Web Workers
  • 通信和 WebSockets

本课程专为对设计、创建和部署 HTML5 Web 应用程序感兴趣的软件开发人员设计。对于已经具有 Web 应用程序开发经验的开发人员来说,它很有价值。要充分利用本课程,您应该熟悉 HTML、CSS 和 JavaScript。

之前对这些概念的了解会有所帮助,但不是必需的:AJAX、XML、jQuery、HTTP、REST。

通知很短,但我们希望您能参加,所以 立即注册!与往常一样,欢迎通过 events@jquery.org 发送电子邮件咨询任何与活动相关的问题。

我们将在演出中见到大家!

jQuery 1.6.4 发布

发布于 作者:

jQuery 1.6.4 发布

这是 jQuery 的一个次要版本发布。我们发布它以修复 jQuery 1.6.3 发布期间出现的一些问题。

您可以从 jQuery CDN 获取代码

您可以帮助我们,将此代码放入您现有的应用程序中,并告诉我们是否有任何功能不再起作用。请 提交错误报告,并确保说明您正在测试 jQuery 1.6.4。

我们希望鼓励社区中的每个人尝试 参与 jQuery 核心的贡献。我们已经建立了一个 完整页面,专门介绍如何更多地参与团队工作。团队随时准备帮助您帮助我们!

jQuery 1.6.4 变更日志

1.6.4 版本的当前变更日志。

数据

  • #10194:focus() 在 IE8 中导致 focus 事件被处理两次

事件

  • #10208:$(“form”).live(“submit”, fn) 未在 IE8 中的 <button type=”submit”> 中触发

支持

  • #10197:jquery 1.6.3 中的 mime-type application/xhtml+xml 错误

jQuery 1.6.4 RC1 发布

发布于 作者:

jQuery 1.6.4 将很快发布,我们需要您的帮助来测试此发布候选版本以查找任何剩余的错误。我们发布了一个新版本来解决 1.6.3 版本发布时出现的几个最后一分钟的错误。考虑到 1.7 版本下个月即将到来,我们认为修复这些错误并完成 1.6.x 系列非常重要,然后再进行更广泛的更改和功能添加。

欢迎通过包含以下文件之一(一个已压缩,一个未压缩)进行测试。如果您发现与 1.6.3 相比有任何重要差异,请 提交错误报告,并确保说明您正在测试 jQuery 1.6.4 RC1。我们首选的测试用例平台是 jsFiddle;您可以在那里使用“jQuery (edge)”选项。

jQuery 1.6.4 RC1 变更日志

1.6.4 版本的当前变更日志

数据

  • #10194:focus() 在 IE8 中导致 focus 事件被处理两次

事件

  • #10208:$(“form”).live(“submit”, fn) 未在 IE8 中的 <button type=”submit”> 中触发

支持

  • #10197:jquery 1.6.3 中的 mime-type application/xhtml+xml 错误

如果您发现问题,请尽快提交包含测试用例的错误报告,如上所述。博客评论或 Twitter 不是有用的错误报告!

jQuery 1.6.3 发布

发布于 作者

jQuery 1.6.3 现已发布!这是在 jQuery 1.6 基础上的第三次小版本发布,修复了以下列出的多个错误。

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

您可以帮助我们,将这段代码放入您现有的应用程序中,并告知我们是否有任何功能不再正常工作。请 提交错误报告,并务必说明您正在使用 jQuery 1.6.3 进行测试。

非常感谢所有报告错误、提交补丁以及以其他方式帮助本次发布的人员!我们鼓励社区中的每个人 参与,为 jQuery 核心做出贡献。我们已经建立了一个 完整页面,专门介绍如何更多地参与到团队中来。团队随时准备帮助您帮助我们!

亮点

修复一个 跨站脚本攻击 (XSS) 漏洞: 用户 ma.la 报告了一种许多网站都在使用的常见模式,用于使用 location.hash 选择元素,该模式允许某人将脚本注入到页面中。这种做法似乎非常普遍,因此我们决定修改选择器识别,以防止最常见情况下的脚本注入。传递给 $() 的任何字符串如果在其前面带有“#”字符,则不能包含 HTML 标签(因此不包含脚本)。有关更多信息和测试用例,请参阅上面链接的票证。

不再出现动画“虫洞”: 当我们在版本 1.6 中添加支持时,我们对浏览器的 requestAnimationFrame API 寄予厚望。然而,此后我们收到的最高数量的投诉与 requestAnimationFrame 在选项卡不可见时表现的方式有关。当选项卡不可见时启动的所有动画都会“堆积”并且不会在选项卡恢复焦点时执行。然后它们都以极快的速度动画!我们已删除对该 API 的支持(这不会影响您调用 jQuery 动画功能的方式),并计划将其合并到 jQuery 的未来版本中。

更好地处理 HTML5 数据属性名称: $().data() API 承担双重职责,处理 jQuery 和插件的内部用途的数据,以及读取 HTML5 data- 属性的初始值。我们改进了使用 HTML5 约定(例如在需要时将 camel-case 转换为 camelCase)的能力。但是,请记住,$().data() API 仅读取 HTML5 data- 属性的初始值,并且出于性能原因,不会将后续的数据更改与属性同步。要更新 HTML 标记中的实际属性,请使用 .attr()

jQuery 1.6.3 变更日志

1.6.3 版本的更新日志

Ajax

  • #9255:jQuery.parseXML 错误处理在 webkit 浏览器中不起作用
  • #9854:传递 statusText 而不是“标准化”它
  • #9887:jQuery.ajaxSetup 可能会导致不必要的内存使用
  • #9970:ajax.js 中的错别字:status 应该是 jqXHR.status?
  • #10098:编码类似注释的 Accept 标头,以避免移动运营商的篡改

属性

  • #9630:foo.contents().hasClass() 返回不正确的值
  • #9699:removeAttr(‘style’) 在 webkit 中不能始终删除 style 属性
  • #9719:removeAttr(‘disabled’) 不会更改 IE6 中的输入颜色
  • #9979:.prop(‘tabIndex’) 返回不一致的结果,对于尚未设置 tabIndex 的元素
  • #9980:简化 attr 代码,在 IE6/7 中对所有内容使用 getAttributeNode

构建

  • #9988:压缩 jQuery 中的最小许可标头

核心

  • #9521:使用 $(location.hash) 和 $(#) 的 XSS) 是否需要?
  • #9897:try-catch isPlainObject 检测
  • #10076:$.inArray 在第二参数为 `null` 或 `undefined` 时崩溃 IE6 和 Chrome

CSS

  • #6652:动画后删除 filter:alpha(opacity=100)
  • #9572:.css() 方法中支持 -ms-transform
  • #10021:无法使用 .css() 和 .animate() 使用相对值语法添加负数

数据

  • #8235:jQuery.data 在某些情况下会引发脚本错误
  • #9318:HTML5 数据属性在属性名称包含数字时行为奇怪
  • #9413:$.fn.removeData 无法删除名称中带有破折号的数据
  • #9779:允许对数据属性值进行非 null|undefined 评估
  • #9794:jQuery.fn.data() 正确处理对任意数据属性值的访问
  • #10016:无法使用 jQuery.data 方法检索“假值”值,这些值位于带有破折号的键名下
  • #10080:从框架的窗口卸载在 IE8 中中断

Dimensions

  • #10123:.width() 可以在 Firefox 6 中返回浮点数

Effects

  • #9381:动画在浏览器失去焦点时由于 requestAnimationFrame 而停止
  • #9678:动画清除 setInterval

事件

  • #7071:在提交特殊处理程序期间访问 VML 元素上的“type”属性失败

操作

  • #9587:克隆带有对象的 div 会在 IE8 中导致错误

支持

  • #9634:support.js 初始化期间左上角可见的“t”字符
  • #9823:IE 8 在 css 中对 BODY 使用 background-image 时崩溃
  • #9964:test/support.js 模块 strictEqual 错别字
  • #10029:$.support.scriptEval 已删除,但仍包含在文档中

如果您发现问题,请尽快提交包含测试用例的错误报告,如上所述。博客评论或 Twitter 不是有用的错误报告!