jQuery 1.7 Beta 1 发布

发布于 作者

如果你还没有听说,jQuery 大会 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 私有数据应该保持私有

延迟

  • #8856: 请求:deferred.isUnresolved()
  • #9033: IE8 中的 try{ } finally{ } 错误
  • #9398: 改进延迟的提议

效果

  • #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 中更改处理程序中的 stopPropagation 错误地应用于 keydown 事件
  • #6386: 通过 “event.special.live.add” 支持 live 事件的 data 参数
  • #6593: IE8:当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667: 提交事件在某些情况下无法在 IE* 中委托
  • #6705: focus() 会导致焦点事件在 IE8 中被处理两次
  • #6903: 特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定。
  • #6942: JQuery.event.fix 在 IE 中处理键事件时会导致不必要的重排
  • #7139: “hover” 事件别名应该适用于 .bind 和 .live
  • #7161: 表单元素上的提交事件在 IE 中未正确解除绑定
  • #7444: 使用“Enter”而不是按钮点击提交表单在 ie8 或 ie7 中会触发 live 提交事件两次。
  • #8157: 将焦点设置到已获得焦点的文本字段将阻止更改事件在 IE 中触发
  • #8728: 当离开的元素被移除时,事件 ‘mouseenter’ 未触发
  • #8789: 元数据:事件属性钩子
  • #8858: 特殊事件——_default 方法无法访问 trigger 方法的 `data` 参数
  • #8866: IE8 input[type=file] 委托更改事件仅在失焦时触发
  • #8982: bind(“unload someOther”) => 在卸载时,处理程序不会只执行一次。
  • #9069: 当悬停在元素的子元素上时,使用 live 或 delegate 时会触发 mouseleave
  • #9279: delegate() bind 对选定元素的 mouseover/mouseout 和 mouseenter/mouseout 处理不正确
  • #9393: 统一和 DRY 事件系统
  • #9593: 委托的提交事件在 IE 中不是 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: 属性选择器在 filter/children/siblings 中不起作用
  • #9570: 选择器 $(‘form[name=”..”]’) 在某些情况下在 IE8 中返回零个元素
  • #10178: $(window).is(“a”) >> 未捕获的 TypeError:无法调用未定义的 ‘toLowerCase’ 方法
  • #10315: Sizzle 在使用位置选择器时忽略 seed 参数

支持

  • #6809: 添加 jQuery.support.fixedPosition

最新添加:jQuery 大会波士顿的 HTML5 培训!

发布于 作者

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


波士顿会议已经售罄(感谢大家!),jQuery入门培训课程也已售罄,但报名请求仍然不断涌来!为了满足大众需求,我们增加了一个新的培训课程,时间为9月30日星期五

此次培训将重点讲解HTML5,由jQuery核心团队成员和Bocoup培训师Richard Worth主讲。价格保持不变,仍然是299美元(如果你一直关注HTML5培训的价格,这简直是物超所值!)。

以下是一些培训描述的细节

HTML5是HTML的下一个重要里程碑,它不仅仅是另一个增量改进;它代表着现代Web应用程序的巨大进步。许多HTML5特性已经得到浏览器支持,所以现在就开始使用它们吧!

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

  • 掌握使用语义HTML5标记的方法
  • 掌握使用跨浏览器HTML5 JavaScript API的方法
  • 了解目前浏览器对各种HTML5特性的支持情况
  • 了解如何在旧版浏览器中为HTML5特性提供垫片

我们的培训采用循序渐进的方式,巩固基础概念,并在此基础上不断学习,让每位学员都能更深入地了解HTML5。采用50%讲座/50%实践的格式,学员能够在每一部分结束后将新学到的概念应用到实践中。

  • HTML5概述
  • 在今天使用HTML5
  • 标记
  • 表单
  • 画布
  • 视频和音频
  • 拖放
  • 地理位置
  • Web存储
  • Web工作者
  • 通信和Web套接字

本课程面向对设计、创建和部署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:带有单破折号包围的字母的数据属性名称无法通过驼峰式命名访问

事件

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

支持

  • #10197:jquery 1.6.3中存在mime类型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(最新版本)”选项即可。

jQuery 1.6.4 RC1变更日志

1.6.4版本的当前变更日志

数据

  • #10194:带有单破折号包围的字母的数据属性名称无法通过驼峰式命名访问

事件

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

支持

  • #10197:jquery 1.6.3中存在mime类型application/xhtml+xml的错误

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

jQuery 1.6.3发布

发布时间: 作者:

jQuery 1.6.3现已发布!这是基于jQuery 1.6的第三个小版本更新,修复了一些错误,如以下列出。

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

您可以帮助我们,将代码放入您的现有应用程序中,并告知我们是否还有任何问题。请提交错误报告,并确保您提到您是在jQuery 1.6.3环境下测试的。

非常感谢所有报告错误、提交补丁以及以其他方式帮助发布此版本的人员!我们鼓励社区中的每个人都参与回馈jQuery核心代码。我们已经设置了一个完整的页面,专门介绍如何更积极地参与团队。团队成员随时准备帮助您帮助我们!

亮点

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

不再有动画“虫洞”当我们在1.6版本中添加对浏览器的requestAnimationFrame API的支持时,我们对它寄予厚望。然而,我们收到的最大量投诉之一与requestAnimationFrame在选项卡不可见时如何工作有关。当选项卡不可见时启动的所有动画都“堆叠”起来,直到选项卡重新获得焦点才会执行。然后它们以超高速动画!我们已删除对该API的支持(这对您调用jQuery动画功能的方式没有影响),并计划将其合并到jQuery的未来版本中。

更妥善地处理HTML5数据属性名称:$().data() API具有双重作用,除了读取HTML5 data-属性的初始值之外,还处理jQuery和插件内部使用的數據。我们改进了使用HTML5约定(例如在需要时将驼峰式命名转换为驼峰式命名)的能力。但是,请记住,$().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:通过在IE6/7中对所有元素使用getAttributeNode来简化attr代码

构建

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

核心

  • #9521:使用$(location.hash) 和 $(#) 时的跨站脚本攻击
  • #9897:try-catch isPlainObject 检测
  • #10076:如果第二个参数为`null` 或 `undefined`,则$.inArray 会导致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中中断

尺寸

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

效果

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

事件

  • #7071:在IE中的提交特殊处理程序期间,访问VML元素上的‘type’属性会失败

操作

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

支持

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

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