jQuery 1.6.1 发布

发布于 作者

我们很高兴宣布 jQuery 1.6 的第一个更新!

您可以从 jQuery CDN 获取代码

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

Microsoft CDN: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js
Google CDN: https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.6.1/jquery.min.js

您可以通过将代码放到现有的应用程序中并告知我们是否有任何不再起作用的功能来帮助我们。请 提交错误,并确保提及您正在针对 jQuery 1.6.1 进行测试。

我们希望鼓励社区中的每个人尝试并 参与 贡献回 jQuery 核心。我们已经建立了一个 完整页面 的信息,专门用于更深入地参与团队。团队就在这里,随时准备帮助你帮助我们!

从 1.5.2 升级到 1.6.1

随着新 .prop() 方法的引入以及对 .attr() 方法的更改,jQuery 1.6 引发了关于属性和属性之间的区别以及它们如何相互关联的讨论。它还带来了一些向后兼容性问题,这些问题已在 1.6.1 中修复。从 1.5.2 升级到 1.6.1 时,您无需更改任何属性代码。

以下是 jQuery 1.6 和 1.6.1 中属性模块的更改说明,以及 .attr() 方法和 .prop() 方法的首选用法。但是,如前所述,jQuery 1.6.1 将允许您像以前一样在所有情况下使用 .attr()

请注意,1.6 版本说明中描述的关于 .data() 方法的更改已被解决,现在可以在 1.5.2 和 1.6.1 之间无缝工作。

更改内容

对属性模块的更改消除了属性和属性之间的歧义,但这在 jQuery 社区中引起了一些混乱,因为所有早于 1.6 的 jQuery 版本都在一个方法 (.attr()) 中处理属性和属性。旧的 .attr() 方法有很多错误,难以维护。

jQuery 1.6.1 附带了一些错误修复以及对属性模块的更新。

具体来说,在 1.6.1 中,诸如 checked、selected、readonly 和 disabled 之类的布尔属性将像在早于 1.6 的 jQuery 版本中一样对待。这意味着诸如

$(“:checkbox”).attr(“checked”, true);
$(“option”).attr(“selected”, true);
$(“input”).attr(“readonly”, true);
$(“input”).attr(“disabled”, true);

甚至

if ( $(“:checkbox”).attr(“checked”) ) { /* Do something */ }

在 1.6.1 中不需要更改,才能像以前预期的那样工作。

为了使 jQuery 1.6 中对 .attr() 的更改清晰,这里是一些在 jQuery 的先前版本中有效的 .attr() 用例的示例,这些用例应该切换为改用 .prop()

.attr() 正确的 .prop() 用法
$(window).attr… $(window).prop…
$(document).attr… $(document).prop…
$(“:checkbox”).attr(“checked”, true); $(“:checkbox”).prop(“checked”, true);
$(“option”).attr(“selected”, true); $(“option”).prop(“selected”, true);

首先,在 jQuery 1.6 中,对 window 或 document 使用 .attr() 方法不起作用,因为 window 和 document 不能具有属性。它们包含属性(例如 location 或 readyState),应该使用 .prop() 或简单的原生 JavaScript 来操作。在 jQuery 1.6.1 中,.attr() 将针对 window 和 document 的 .prop() 方法,而不是抛出错误。

其次,之前提到的 checked、selected 和其他布尔属性会受到特殊对待,因为这些属性与其对应的属性之间存在特殊关系。基本上,属性是您在 html 中看到的

<input type=”checkbox” checked=”checked”>

诸如 checked 之类的布尔属性仅设置默认值或初始值。在复选框的情况下,checked 属性设置页面加载时复选框是否应选中。

属性是浏览器用来跟踪当前值的内容。通常,属性反映其对应的属性(如果存在)。布尔属性并非如此。当用户单击复选框或在下拉菜单中选择选项时,布尔属性会保持最新。相应的布尔属性不会。如上所述,它们仅由浏览器用于存储初始值。

$(“:checkbox”).get(0).checked = true;
// Is the same as $(":checkbox:first").prop(“checked”, true);

在 jQuery 1.6 中,使用

$(“:checkbox”).attr(“checked”, true);

来设置 checked 将不会选中复选框,因为需要设置的是属性,而您只是设置了初始值。

但是,在发布 jQuery 1.6 后,jQuery 团队意识到,设置浏览器只在页面加载时关注的内容并没有什么用。因此,为了保持向后兼容性和 .attr() 方法的实用性,我们将继续能够在 jQuery 1.6.1 中使用 .attr() 方法获取和设置这些布尔属性。

最常见的布尔属性是checked、selected、disabled 和 readOnly,但以下是 jQuery 1.6.1 支持使用 .attr() 动态获取和设置的布尔属性/属性的完整列表

autofocus, autoplay, async, checked, controls, defer, disabled,
hidden, loop, multiple, open, readonly, required, scoped, selected

仍然建议在设置这些布尔属性/属性时使用 .prop(),但是即使这些用例没有切换为使用 .prop() 方法,您的代码也将继续在 jQuery 1.6.1 中工作。

以下是某些属性和属性的列表,以及在获取或设置它们时通常应使用哪种方法。这是首选用法,但 .attr() 方法将在所有属性情况下起作用。

请注意,下面还列出了一些 DOM 元素属性 - 但只适用于新的 .prop() 方法。

属性/属性 .attr() .prop()
accesskey
align
async
autofocus
checked
class
contenteditable
defaultValue
draggable
href
id
label
location *
multiple
nodeName
nodeType
readOnly
rel
selected
selectedIndex
src
style
tabindex
tagName
title
type
width **

* 例如,对于 window.location
** 如果需要超过 .width()

.attr().prop() 都不能用于获取/设置value。请改用 .val() 方法(尽管使用 .attr(“value”, “somevalue”) 仍然有效,因为它在 1.6 之前有效)。

首选用法的总结

.prop() 方法应该用于布尔属性/属性以及不存在于 html 中的属性(如 window.location)。所有其他属性(您可以在 html 中看到的属性)都可以并且应该继续使用 .attr() 方法进行操作。

jQuery 1.6.1 更改日志

1.6.1 版本的当前更改日志。

属性

  • #9071: $(‘<option></option>’).val(‘myValue’) 不再设置 value
  • #9079: .attr(“selected”) 在 1.6 中返回无用的值
  • #9089: 1.6 atrr() 在 IE7、8 中不一致
  • #9094: jQuery 1.6 中的复选框问题:无法取消选中复选框
  • #9103: .attr(‘foo’, true) 未设置相关的 DOM 属性
  • #9123: 当生成输入元素时,attr 方法的奇怪行为。
  • #9129: jQuery 不支持枚举属性,如 contenteditable
  • #9191: 单选按钮上的 attr checked 错误

数据

  • #9124: $.data 的更改在某些情况下不合理
  • #9126: jquery 在使用 strict 时会中断

延迟

  • #9104: 在管道过滤器函数中返回 null 或 undefined 会导致异常

效果

  • #9074: 无法同时动画化位置和不透明度
  • #9100: hide() 回调的顺序已更改

事件

  • #9069: 当将鼠标悬停在元素的子元素上时,使用 live 或 delegate 时,mouseleave 会触发

操作

  • #9072: jQuery 1.6 使 IE 6 崩溃
  • #9221: AJAX 中的 JavaScript 无法在 IE 中加载 - 错误 80020101

队列

  • #9147: promise 中的变量 tmp 是隐式声明的?

选择器

  • #7341: IE 中 .add() 速度慢
  • #9096: jQuery 1.6 中的选择器或查找错误
  • #9154: :reset 伪选择器已损坏

支持

  • #8763: 未处理的异常:document.defaultView.getComputedStyle(div, null) 为 null (FF,隐藏 iframe)
  • #9109: 即使不在怪异模式下,support.boxModel 在 IE6 中也为 false

jQuery 1.6.1 RC 1 发布

发布于 作者

我们即将发布 jQuery 1.6 的第一个更新 - 我们很高兴宣布第一个候选版本发布!如果没有任何重大错误,这应该是我们最终用于 jQuery 1.6.1 的代码(这将在本周内完成)。

您可以从 jQuery CDN 获取代码

您可以通过将代码放到现有的应用程序中并告知我们是否有任何不再起作用的功能来帮助我们。请 提交错误,并确保提及您正在针对 jQuery 1.6.1 RC 1 进行测试。

我们希望鼓励社区中的每个人尝试并 参与 贡献回 jQuery 核心。我们已经建立了一个 完整页面 的信息,专门用于更深入地参与团队。团队就在这里,随时准备帮助你帮助我们!

从 1.5.2 升级到 1.6.1

随着新方法.prop()的引入以及对.attr()方法的修改,jQuery 1.6 引发了关于属性和特性之间的区别以及它们如何相互关联的讨论。它还带来了一些向后兼容性问题,这些问题已在 1.6.1 中修复。**从 1.5.2 更新到 1.6.1 时,您无需更改任何代码。**

以下是 jQuery 1.6 和 1.6.1 中属性模块的更改说明,以及 .attr() 方法和 .prop() 方法的首选用法。但是,如前所述,jQuery 1.6.1 将允许您像以前一样在所有情况下使用 .attr()

更改内容

对属性模块的更改消除了属性和属性之间的歧义,但这在 jQuery 社区中引起了一些混乱,因为所有早于 1.6 的 jQuery 版本都在一个方法 (.attr()) 中处理属性和属性。旧的 .attr() 方法有很多错误,难以维护。

jQuery 1.6.1 附带了一些错误修复以及对属性模块的更新。

具体来说,在 1.6.1 中,诸如 checked、selected、readonly 和 disabled 之类的布尔属性将像在早于 1.6 的 jQuery 版本中一样对待。这意味着诸如

$(“:checkbox”).attr(“checked”, true);
$(“option”).attr(“selected”, true);
$(“input”).attr(“readonly”, true);
$(“input”).attr(“disabled”, true);

甚至

if ( $(“:checkbox”).attr(“checked”) ) { /* Do something */ }

在 1.6.1 中不需要更改,才能像以前预期的那样工作。

为了使 jQuery 1.6 中对 .attr() 的更改清晰,这里是一些在 jQuery 的先前版本中有效的 .attr() 用例的示例,这些用例应该切换为改用 .prop()

.attr() 正确的 .prop() 用法
$(window).attr… $(window).prop…
$(document).attr… $(document).prop…
$(“:checkbox”).attr(“checked”, true); $(“:checkbox”).prop(“checked”, true);
$(“option”).attr(“selected”, true); $(“option”).prop(“selected”, true);

首先,在 jQuery 1.6 中,对 window 或 document 使用 .attr() 方法不起作用,因为 window 和 document 不能具有属性。它们包含属性(例如 location 或 readyState),应该使用 .prop() 或简单的原生 JavaScript 来操作。在 jQuery 1.6.1 中,.attr() 将针对 window 和 document 的 .prop() 方法,而不是抛出错误。

其次,之前提到的 checked、selected 和其他布尔属性会受到特殊对待,因为这些属性与其对应的属性之间存在特殊关系。基本上,属性是您在 html 中看到的

<input type=”checkbox” checked=”checked”>

诸如 checked 之类的布尔属性仅设置默认值或初始值。在复选框的情况下,checked 属性设置页面加载时复选框是否应选中。

属性是浏览器用来跟踪当前值的内容。通常,属性反映其对应的属性(如果存在)。布尔属性并非如此。当用户单击复选框或在下拉菜单中选择选项时,布尔属性会保持最新。相应的布尔属性不会。如上所述,它们仅由浏览器用于存储初始值。

$(“:checkbox”).get(0).checked = true;
// Is the same as $(":checkbox:first").prop(“checked”, true);

在 jQuery 1.6 中,使用

$(“:checkbox”).attr(“checked”, true);

来设置 checked 将不会选中复选框,因为需要设置的是属性,而您只是设置了初始值。

但是,在发布 jQuery 1.6 后,jQuery 团队意识到,设置浏览器只在页面加载时关注的内容并没有什么用。因此,为了保持向后兼容性和 .attr() 方法的实用性,我们将继续能够在 jQuery 1.6.1 中使用 .attr() 方法获取和设置这些布尔属性。

最常见的布尔属性是checked、selected、disabled 和 readOnly,但以下是 jQuery 1.6.1 支持使用 .attr() 动态获取和设置的布尔属性/属性的完整列表

autofocus, autoplay, async, checked, controls, defer, disabled,
hidden, loop, multiple, open, readonly, required, scoped, selected

仍然建议在设置这些布尔属性/属性时使用 .prop(),但是即使这些用例没有切换为使用 .prop() 方法,您的代码也将继续在 jQuery 1.6.1 中工作。

下面列出了一些属性和特性,以及在获取或设置它们时应使用哪种方法。这是首选用法,但.attr()方法在所有情况下均有效。

属性/属性 .attr() .prop()
accesskey
align
async
autofocus
checked
class
contenteditable
draggable
href
id
label
location(例如 window.location)
multiple
readOnly
rel
selected
src
tabindex
title
type
width(如果需要,可以使用.width()

.attr().prop() 都不能用于获取/设置value。请改用 .val() 方法(尽管使用 .attr(“value”, “somevalue”) 仍然有效,因为它在 1.6 之前有效)。

首选用法的总结

.prop() 方法应该用于布尔属性/属性以及不存在于 html 中的属性(如 window.location)。所有其他属性(您可以在 html 中看到的属性)都可以并且应该继续使用 .attr() 方法进行操作。

jQuery 1.6.1 RC 1 更改日志

1.6.1 RC 1 版本的当前更改日志。

属性

  • #9079: .attr(“selected”) 在 1.6 中返回无用的值
  • #9089: 1.6 atrr() 在 IE7、8 中不一致
  • #9094: jQuery 1.6 中的复选框问题:无法取消选中复选框
  • #9103: .attr(‘foo’, true) 未设置相关的 DOM 属性
  • #9123: 当生成输入元素时,attr 方法的奇怪行为。
  • #9129: jQuery 不支持枚举属性,如 contenteditable
  • #9191: 单选按钮上的 attr checked 错误

数据

  • #9124: $.data 的更改在某些情况下不合理
  • #9126: jquery 在使用 strict 时会中断

延迟

  • #9104: 在管道过滤器函数中返回 null 或 undefined 会导致异常

效果

  • #9074: 无法同时动画化位置和不透明度
  • #9100: hide() 回调的顺序已更改

事件

  • #9069: 当将鼠标悬停在元素的子元素上时,使用 live 或 delegate 时,mouseleave 会触发

操作

  • #9072: jQuery 1.6 使 IE 6 崩溃

队列

  • #9147: promise 中的变量 tmp 是隐式声明的?

选择器

  • #7341: IE 中 .add() 速度慢
  • #9096: jQuery 1.6 中的选择器或查找错误
  • #9154: :reset 伪选择器已损坏

支持

  • #8763: 未处理的异常:document.defaultView.getComputedStyle(div, null) 为 null (FF,隐藏 iframe)
  • #9109: 即使不在怪异模式下,support.boxModel 在 IE6 中也为 false

jQuery 1.6 发布

发布日期 作者

jQuery 1.6 现已正式发布并可供使用!我们对这次发布感到非常自豪,它包括对属性模块的重大重写以及许多性能改进。

请借此机会感谢jQuery 团队jQuery 错误分类团队的成员,感谢他们帮助我们发布了这个版本。

您可以从 jQuery CDN 获取代码

您也可以从其他 CDN 获取代码

我们希望鼓励社区中的每个人尝试并 参与 贡献回 jQuery 核心。我们已经建立了一个 完整页面 的信息,专门用于更深入地参与团队。团队就在这里,随时准备帮助你帮助我们!

事实上,我们已经开始着手进行 jQuery 1.7 的工作。我们欢迎jQuery 1.7 的功能提案。如果您有任何建议,请使用上述表格提交。

jQuery 1.6 更改日志

本版本中发生的所有 API 更改都可以在 jQuery API 文档中找到
https://api.jqueryjs.cn/category/version/1.6/

重大变更

在大多数版本中,我们尝试与现有代码保持兼容。但是,在某些情况下,jQuery 1.6 可能需要更改现有代码

data- 属性的大小写映射

jQuery 1.5 在.data()方法中引入了一项功能,可以自动导入元素上设置的任何data-属性,并使用 JSON 语义将其转换为 JavaScript 值。在 jQuery 1.6 中,我们更新了此功能,使其与W3C HTML5 规范相匹配,该规范涉及对包含连字符的数据属性进行驼峰式命名。例如,在 jQuery 1.5.2 中,data-max-value="15" 属性会创建一个数据对象{ max-value: 15 },但从 jQuery 1.6 开始,它会设置{ maxValue: 15 }

.prop().removeProp().attr()

在 1.6 版本中,我们已将 DOM 属性和 DOM 特性的处理拆分为单独的方法。新的.prop()方法设置或获取 DOM 元素上的特性,.removeProp()删除特性。过去,jQuery 没有在特性和属性之间划清界限。通常,DOM 属性表示从文档中检索到的 DOM 信息的状态,例如标记<input type="text" value="abc">中的value属性。DOM 特性表示文档的动态状态;例如,如果用户单击上面的输入元素并键入def,则.prop("value")abcdef,但.attr("value")保持为abc

在大多数情况下,浏览器将属性值视为特性的起始值,但布尔属性(如checkeddisabled)具有不寻常的语义。

例如,请考虑标记<input type="checkbox" checked>checked属性的存在意味着 DOM.checked特性为true,即使该属性没有值。在上面的代码中,checked属性值为一个空字符串(如果未指定属性,则为undefined),但checked特性值为true

在 jQuery 1.6 之前,.attr("checked")返回布尔特性值 (true),但从 jQuery 1.6 开始,它返回属性的实际值(一个空字符串),该值在用户单击复选框以更改其状态时不会改变。

有几种替代方法可以检查复选框的当前选中状态。最好也是性能最高的做法是直接使用 DOM 特性,例如,在事件处理程序中使用this.checked,其中this引用被单击的元素。在使用 jQuery 1.6 或更高版本的代码中,新方法$(this).prop("checked")检索与this.checked相同的值,并且速度相对较快。最后,表达式$(this).is(":checked")适用于所有版本的 jQuery。

Ajax

已修复的错误

  • #6481:还原 $.param 应该将空数组/对象视为空字符串
  • #7881:使其与 XHR 2 兼容
  • #8417:在发布 AJAX 时,如果数据包含“??”,则将其格式化为 jQuery<timestamp>?
  • #8744:.ajax() jsonp 请求在超时时未正确处理
  • #8884:jqXHR 会破坏自定义标头字段的名称

属性

性能改进

jQuery 1.6 .attr("value")

jQuery 1.6 .attr("name", "value")

jQuery 1.6 .val() (get)

测试和数据

.prop().removeProp().attr()

(请参阅上面“重大变更”部分中对更改内容的描述。)

布尔属性

在 jQuery 1.6 中,现在可以通过向.attr()传递truefalse来切换布尔属性(如 selected、checked 等),以添加或删除它们。例如

$("#checkbox").attr("checked", true); // Checks it
$("#checkbox").attr("checked", false); // Unchecks it

.attr().val() 的可扩展性

为了更轻松地为特定属性(jQuery.attrHooks)或表单输入值(jQuery.valHooks)添加特殊处理,添加了两个新的挂钩。

例如

jQuery.attrHooks.selected = {
	set: function( elem, value ) {
		if ( value === false ) {
			jQuery.removeAttr(elem, “selected”);
			return value;
		}
	}
};

这两个挂钩的行为与 jQuery 的内置 CSS 挂钩非常相似(允许您为特定属性(或值)指定获取或设置方法),以处理这些特定情况。

已修复的错误

  • #1591:IE “无效参数” $(‘table’).attr(‘non-existent’)
  • #3116:.attr 不适用于 SVG IDL
  • #3786:removeAttr 应该使用 jQuery.props
  • #4283:.attr(‘checked’) & XHTML 1.1 Strict
  • #4464:IE 无法获取分离的 IMG 元素的 width 属性
  • #4978:jQuery.prop 缺少 cellpadding?
  • #5413:标签“img”的 width/height 属性为零(IE)
  • #6562:使用 .attr() 设置“target”属性,其中节点的 ID 为“target”
  • #6708:Opera 对 usemap 属性值的返回结果不一致
  • #6823:使 .val(value) 针对常用用例更快
  • #7472:$(‘form’).attr(‘id’) 返回 DOM 元素
  • #7485:[attribute] 选择器与 attr() 方法之间存在不一致
  • #7709:从非 Chrome Firefox/3.5.15 访问属性“nodeType”时拒绝权限
  • #7996:Safari $(‘script’).attr(‘event’); Bug
  • #8117:.removeAttr 不适用于 select 元素的 size 属性
  • #8150:removeAttr 在 webkit、firefox 中存在问题
  • #8255:对 list 属性的支持
  • #8418:在 IE 7 中使用 attr() 方法设置 name 参数
  • #8457:attrHooks
  • #8570:.val 方法针对在 ie9 中动态创建的单选按钮返回“on”
  • #8699:.attr() 在缺少属性时返回 -1 而不是 undefined
  • #8772:使用 .attr() 设置输入类型“range”会导致 IE9 中出现脚本错误
  • #8997:不支持新属性“form”(HTML5),.attr(‘form’) 工作不正常
  • #9037:$(‘blah’).attr(‘onclick’) 在 Firefox 中返回事件

构建

已修复的错误

  • #8854:缩小器进程中的错误

核心

jQuery.map(Object)

现在可以使用 jQuery.map 方法映射 JavaScript 对象的属性。例如

var counts = { first: 1, second: 2 };
	
counts = jQuery.map( counts, function( value ) {
	return value++;
});

已修复的错误

  • #2616:更好的 jQuery.map
  • #4366:$.each 在 IE 中使用 document.styleSheets 时失败
  • #6690:存储对 location 和 navigator 对象的引用
  • #7049:使 jQuery.noConflict() 随时可调用
  • #7783:修复 $.proxy 以使其像 (和使用) Function.prototype.bind 一样工作
  • #7862:jQuery.globalEval():在 Firefox 中被远程脚本延迟执行
  • #7990:在 Firefox 中使用 jQuery 构造函数创建大型 HTML 块时出现脚本空间配额耗尽错误
  • #8893:jQuery.proxy(context, name) 在 1.6b1 中存在错误
  • #8984:jQuery 无法正确解析字符串中的 html!
  • #8993:jQuery.map(emptyNodeList) 正在枚举属性。

CSS

相对 CSS

我们移植了 .animate() 方法的功能,使您能够使用相对值更新 CSS 属性。您现在可以在 CSS 值前面加上“+=”或“-=”来相对于当前值更新属性。

// Move an item 10px over
$("#item").css("left", "+=10px");

已修复的错误

  • #6135:jQuery 尝试访问文本标签的 .style 属性
  • #7345:支持 $().css() 的相对值
  • #7730:offset.js:setOffset 使用 parseInt 解析可能包含浮点数的 css 值
  • #8401:对 opacity cssHooks 的少量增强
  • #8402:jQuery.cssProps 在除 IE6/7/8 之外的所有浏览器中都无用
  • #8403:jQuery 在分配不透明度时会破坏其他 IE 过滤器

数据

性能改进

通过提高事件触发的性能,.data()获得了巨大的性能改进。jQuery 的.data()方法触发 getData 和 setData 事件,这为插件提供了更高程度的可扩展性,改进其触发方式可以让.data()变得更快。

jQuery 1.6 .data() (get and set)

测试和数据

已修复的错误

  • #7328:data-foo-bar 是否可以通过 .data( ‘fooBar’ ) 以及 .data( ‘foo-bar’ ) 访问

Deferreds

deferred.always()

在 1.5 中,当您希望在 deferred 被解决或被拒绝时执行完全相同的操作时,您必须使用命名函数并将它传递给“then”两次

function callback() {
    // the deferred has been resolved or rejected
}

defer.then( callback, callback );

使用“always”,您可以在内联中执行此操作

defer.always(function() {
    // the deferred has been resolved or rejected
});

deferred.pipe()

链接异步任务可能很乏味,尤其是在您希望为整个链返回 Promise 时

function chainedAjax( url ) {
    return $.Deferred(function( defer ) {
        $.ajax( url ).then( function( url2 ) {
            $.ajax( url2 ).then( defer.resolve, defer.reject )
        }, defer.reject ).promise();
    });
}

使用“pipe”,一切都变得更加易读和自然

function chainedAjax( url ) {
    return $.ajax( url ).pipe(function( url2 ) {
        return $.ajax( url2 );
    });
}

它还可以用于过滤解决和/或拒绝值

var request = $.ajax( url ).pipe(function( data ) {
   return data.value;
});

request.done(function( value ) {
    // we get the value field of the original response
});

效果

同步动画

在 jQuery 中,您可以让多个动画同时运行(甚至在同一个元素上对不同的属性执行多个动画)。在 1.6 中,我们引入了一个增强功能,确保所有动画都同步到相同的计时器间隔。这在之前可能存在问题,因为动画可能会略微不同步(甚至相差几毫秒),从而导致动画略微“偏离”。

更流畅的动画

此外,jQuery 现在使用浏览器提供的新的 requestAnimationFrame 方法来使我们的动画更加流畅。我们可以使用此功能来避免调用计时器,而是依赖浏览器来提供最佳的动画体验。

.promise()

就像之前的 $.ajax() 一样,$.animate() 也获得了“延迟”。jQuery 对象现在可以返回一个 Promise,以观察集合中所有动画何时完成。

$(".elements").fadeOut();

$.when( $(".elements") ).done(function( elements ) {
    // all elements faded out
});

已修复的错误

  • #7917: .animate() 在与大量元素组一起使用时,不会“同步”。
  • #7934: $.fn.animate 实现延迟。
  • #7974: 清理 effects.js 以提高性能并减少文件大小。
  • #8099: SPAN 元素在 show() 上变为块级元素。
  • #8101: 在可用时,使用 requestAnimationFrame 而不是 setInterval 进行动画。

事件

性能改进

(如在讨论 .data() 性能时提到的,事件触发性能已经得到改进。)

jQuery.holdReady()

jQuery 提供了一种机制来延迟 ready 事件的执行(主要是针对插件作者)。该机制的 API 在 1.6 中得到了改进,导致了一个单一的、简单的方法。

jQuery.holdReady( true ); // Pause execution of ready event
// later...
jQuery.holdReady( false ); // Resume execution

已修复的错误

  • #5884: 当嵌套时,实时 mouseenter/mouseleave 事件不会按预期触发。
  • #6514: 如果通过实时绑定,则无法触发 Mouseenter 和 mouseleave 事件。
  • #6913: 命名空间事件冒泡错误。
  • #6993: .bind() 和 .one() 不允许函数作为数据。
  • #7071: 在 IE 上访问 VML 元素的 'type' 属性失败。
  • #7883: .delegate(和 .live)应该接受 false 作为 fn 参数,就像 .bind 一样。
  • #8018: 对 frameElement 的不安全访问会导致跨域 (i) 框架中的错误。
  • #8272: 纯 JS 对象事件处理程序中的异常被 jQuery 吞并。
  • #8712: 自定义事件不会冒泡到窗口。
  • #8732: 对 IE9 focusin/focusout 的功能检测不正确。
  • #8753: jQuery 1.6: jQuery.Event 构造函数支持设置属性。
  • #8755: 在 IE6、7、8 中,绑定到 beforeunload 会在页面卸载时引发错误。
  • #8777: jQuery 1.6: undelegate() 接受自定义命名空间事件。
  • #8788: 重新组织 jQuery.event.trigger 以使用循环而不是递归。
  • #8790: 优化未附加的事件,例如数据事件。
  • #8803: jQuery.holdReady() 方法。

操作

已修复的错误

  • #1954: val() 在 IE 中为按钮元素返回 innerHTML。
  • #6180: jQuery.clean 不应触碰类型不是 text/javascript 的脚本标签。
  • #7623: 在 replaceWith 中抛出异常。
  • #7885: 当当前偏移量为浮点数(在 FireFox 中可能)时,jQuery .offset 无法正常工作。
  • #8060: 在断开连接的复选框上将 checked 设置为 true 不会在附加到 DOM 后保留。
  • #8500: 在 IE 中,单选按钮和复选框在包装时恢复到默认(HTML)状态。

其他

已修复的错误

  • #8203: 删除不必要的“someVar = null;”。
  • #8851: 在源代码和测试中用双引号包装字符串。
  • #8882: 测试:更新 QUnit 使用情况,将 id=main 替换为 id=qunit-fixture。

偏移量

已修复的错误

  • #7931: 当在空 jQuery 对象上调用时,scrollTop 和 scrollLeft 设置器返回 null。

选择器

:focus 选择器

在 jQuery 1.6 中,我们现在确保 :focus 选择器在所有浏览器中都能正常工作。您可以使用此选择器来查找页面上当前获得焦点的元素(例如表单输入)。

$("input:focus").addClass("active");
  • #3685: 选择器对名为“name”的元素的表单失败。
  • #4321: $(“#”) 返回未定义。
  • #8105: :focus 选择器过滤器。

支持

已修复的错误

  • #9028: 如果使用 body 背景图像,IE8 在加载 1.6rc1 时崩溃。

遍历

find()closest()is() 现在都接受 DOM 元素和 jQuery 对象。

在 jQuery 1.6 中,我们确保 find()closest()is() 都可以接受 DOM 元素和 jQuery 对象作为参数。这为您提供了基于传入元素过滤元素集的替代方案。

// Only returns .test elements if they're inside of a div
$("div").find( $(".test") )

已修复的错误

  • #2773: $.fn.is 和 $.fn.not 应该接受 DOMelements 和 jQuery 集合。
  • #5712: 允许 jQuery.fn.is 接受函数。
  • #6912: $().add(selectElement) 添加选项子元素而不是。
  • #7369: $(‘<div>ff</div>’).closest(‘[attr]’); 在所有浏览器中引发异常。
  • #8609: .find(” “) 的结果未定义。

jQuery 1.6 RC 1 发布

发布于 作者

这是 jQuery 的预览版。我们发布它是为了让每个人都可以在他们的应用程序中开始测试代码,确保没有重大问题。

您可以从 jQuery CDN 获取代码

您可以通过将该代码放入您现有的应用程序中并告诉我们是否还有任何内容不再工作来帮助我们。请 提交错误报告,并务必提及您正在针对 jQuery 1.6 RC 1 进行测试。

我们希望鼓励社区中的每个人尝试并 参与 贡献回 jQuery 核心。我们已经建立了一个 完整页面 的信息,专门用于更深入地参与团队。团队就在这里,随时准备帮助你帮助我们!

jQuery 1.6 RC 1 变更日志

1.6 RC 1 版本的当前变更日志。

Ajax

  • #6481:还原 $.param 应该将空数组/对象视为空字符串
  • #7881:使其与 XHR 2 兼容
  • #8417:在发布 AJAX 时,如果数据包含“??”,则将其格式化为 jQuery<timestamp>?
  • #8744:.ajax() jsonp 请求在超时时未正确处理
  • #8884:jqXHR 会破坏自定义标头字段的名称

属性

  • #3786:removeAttr 应该使用 jQuery.props
  • #4283:.attr(‘checked’) & XHTML 1.1 Strict
  • #4464:IE 无法获取分离的 IMG 元素的 width 属性
  • #4978:jQuery.prop 缺少 cellpadding?
  • #5413:标签“img”的 width/height 属性为零(IE)
  • #6562:使用 .attr() 设置“target”属性,其中节点的 ID 为“target”
  • #6708:Opera 对 usemap 属性值的返回结果不一致
  • #6823:使 .val(value) 针对常用用例更快
  • #7472:$(‘form’).attr(‘id’) 返回 DOM 元素
  • #7485:[attribute] 选择器与 attr() 方法之间存在不一致
  • #7709:从非 Chrome Firefox/3.5.15 访问属性“nodeType”时拒绝权限
  • #7996:Safari $(‘script’).attr(‘event’); Bug
  • #8117:.removeAttr 不适用于 select 元素的 size 属性
  • #8150:removeAttr 在 webkit、firefox 中存在问题
  • #8255:对 list 属性的支持
  • #8418:在 IE 7 中使用 attr() 方法设置 name 参数
  • #8457:attrHooks
  • #8570:.val 方法针对在 ie9 中动态创建的单选按钮返回“on”
  • #8699:.attr() 在缺少属性时返回 -1 而不是 undefined
  • #8772:使用 .attr() 设置输入类型“range”会导致 IE9 中出现脚本错误

构建

  • #8854:缩小器进程中的错误

核心

  • #2616:更好的 jQuery.map
  • #3116:.attr 不适用于 SVG IDL
  • #4366:$.each 在 IE 中使用 document.styleSheets 时失败
  • #6690:存储对 location 和 navigator 对象的引用
  • #7049:使 jQuery.noConflict() 随时可调用
  • #7783:修复 $.proxy 以使其像 (和使用) Function.prototype.bind 一样工作
  • #7862:jQuery.globalEval():在 Firefox 中被远程脚本延迟执行
  • #7990:在 Firefox 中使用 jQuery 构造函数创建大型 HTML 块时出现脚本空间配额耗尽错误
  • #8882: 测试:更新 QUnit 使用情况,将 id=main 替换为 id=qunit-fixture。
  • #8893:jQuery.proxy(context, name) 在 1.6b1 中存在错误

Css

  • #6135:jQuery 尝试访问文本标签的 .style 属性
  • #7345:支持 $().css() 的相对值
  • #7730:offset.js:setOffset 使用 parseInt 解析可能包含浮点数的 css 值
  • #8401:对 opacity cssHooks 的少量增强
  • #8402:jQuery.cssProps 在除 IE6/7/8 之外的所有浏览器中都无用
  • #8403:jQuery 在分配不透明度时会破坏其他 IE 过滤器

数据

  • #7328: data-foo-bar 是否应该可以通过 .data( ‘fooBar’ ) 和 .data( ‘foo-bar’ ) 访问?

效果

  • #7917: .animate() 在与大量元素组一起使用时,不会“同步”。
  • #7934: $.fn.animate 实现延迟。
  • #7974: 清理 effects.js 以提高性能并减少文件大小。
  • #8099: SPAN 元素在 show() 上变为块级元素。
  • #8101: 在可用时,使用 requestAnimationFrame 而不是 setInterval 进行动画。

事件

  • #5884: 当嵌套时,实时 mouseenter/mouseleave 事件不会按预期触发。
  • #6514: 如果通过实时绑定,则无法触发 Mouseenter 和 mouseleave 事件。
  • #6913: 命名空间事件冒泡错误。
  • #6993: .bind() 和 .one() 不允许函数作为数据。
  • #7071: 在 IE 上访问 VML 元素的 'type' 属性失败。
  • #7883: .delegate(和 .live)应该接受 false 作为 fn 参数,就像 .bind 一样。
  • #8018: 对 frameElement 的不安全访问会导致跨域 (i) 框架中的错误。
  • #8272: 纯 JS 对象事件处理程序中的异常被 jQuery 吞并。
  • #8712: 自定义事件不会冒泡到窗口。
  • #8732: 对 IE9 focusin/focusout 的功能检测不正确。
  • #8753: jQuery 1.6: jQuery.Event 构造函数支持设置属性。
  • #8755: 在 IE6、7、8 中,绑定到 beforeunload 会在页面卸载时引发错误。
  • #8777: jQuery 1.6: undelegate() 接受自定义命名空间事件。
  • #8788: 重新组织 jQuery.event.trigger 以使用循环而不是递归。
  • #8790: 优化未附加的事件,例如数据事件。
  • #8803: jQuery.holdReady() 方法。

操作

  • #1954: val() 在 IE 中为按钮元素返回 innerHTML。
  • #6180: jQuery.clean 不应触碰类型不是 text/javascript 的脚本标签。
  • #7623: 在 replaceWith 中抛出异常。
  • #7885: 当当前偏移量为浮点数(在 FireFox 中可能)时,jQuery .offset 无法正常工作。
  • #8060: 在断开连接的复选框上将 checked 设置为 true 不会在附加到 DOM 后保留。
  • #8500: 在 IE 中,单选按钮和复选框在包装时恢复到默认(HTML)状态。

其他

  • #8203: 删除不必要的“someVar = null;”。
  • #8851: 在源代码和测试中用双引号包装字符串。

偏移量

  • #7931: 当在空 jQuery 对象上调用时,scrollTop 和 scrollLeft 设置器返回 null。

选择器

  • #3685: 选择器对名为“name”的元素的表单失败。
  • #4321: $(“#”) 返回未定义。
  • #8105: :focus 选择器过滤器。

遍历

  • #2773: $.fn.is 和 $.fn.not 应该接受 DOMelements 和 jQuery 集合。
  • #5712: 允许 jQuery.fn.is 接受函数。
  • #6912: $().add(selectElement) 添加选项子元素而不是。
  • #7369: $(‘<div>ff</div>’).closest(‘[attr]’); 在所有浏览器中引发异常。
  • #8609: .find(” “) 的结果未定义。

官方插件:路线图的变化

发布于 作者

仅仅在六个月前,我们宣布我们正在采用微软主要开发的三个插件——模板、数据链接和全球化——作为官方插件,按照 jQuery 项目的标准进行开发并获得其支持。今天,我们想借此机会分享我们在这段时间里学到的东西,并宣布这些插件以及 jQuery 的其他“官方插件”的路线变更。

从未有过专门的 jQuery 团队来支持官方插件。在采用微软的贡献之前,jQuery 项目支持的插件——颜色、缓动、bgiframe、鼠标滚轮、元数据和 Cookie——是简单而有效的插件,用于实现特定的实用目的。它们几乎不需要维护,从 jQuery 核心版本的版本到版本,都坚定地提供服务,几乎没有麻烦。最近几个月,当我们注意到与这三个新插件相关的疑问有所增加时,我们意识到存在脱节。虽然微软仍在继续开发这些插件的测试版,但计划中的 jQuery 子团队本应该与微软合作并采用他们的工作,但从未形成。

随着需求的增长,基于插件测试版的存在以及文章中所做的承诺,我们已经感受到了抱怨、困惑和困惑的惊呼:“我以为模板会在 1.5 中!” 由于您和我们的担忧,我们决定完全取消官方插件的概念。这是一个语义上的和象征性的区别,但这就是它的实际影响。

许多最初支持的 jQuery 插件(颜色、缓动和鼠标滚轮)将继续由 jQuery 核心开发团队支持和维护。元数据插件将被弃用,取而代之的是 jQuery 1.4.3 及更高版本提供的类似功能。Cookie 插件 将继续由 Klaus Hartl 维护。

jQuery UI 项目将接管它当前或将来依赖的插件:模板、全球化和 bgiframe。jQuery UI 团队计划从头开始开发模板和全球化,从 UI 插件的正常流程开始:协作开发规范。虽然有些人可能认为这是倒退,考虑到当前 jquery-tmpl 插件的现有进展,这实际上是一个机会,让我们与社区——包括微软——一起合作开发一个有效且灵活的实现。“官方插件”微软一直在开发的插件一直处于测试阶段,可能会发生变化,并且计划在 Beta 2 版本中进行重大修改,但我们认识到(并感谢)那些已经开始尝试并将其用于您的应用程序的人。UI 团队仍在为 模板 和全球化插件进行早期规划,我们邀请您访问 规划维基 并分享您对开发的看法。

微软将继续独立开发和支持数据链接插件,并将负责托管现有插件的文档。但是,在短期内,我们将保留这些插件的文档在 api.jquery.com 上,以便为任何需要它的人保留参考。有关微软对数据链接的计划,请阅读 他们的官方插件更新。我们重视微软对 jQuery 的持续贡献,为许多努力提供开发时间和财务支持,包括 jQuery UI Grid 和 jQuery 会议。

我们意识到,这些细节中的一些可能看起来是变动不定的,或者只是组织性的,但我们知道,在这些变化发生时告诉社区是重要的,这样您就可以尽快为您的应用程序做出最佳决定。我们希望您理解我们必须进行这些转变的原因,并鼓励您参与其中,帮助我们推动这些重要项目向前发展!

附录:为什么模板不在 1.5 中?

虽然我们最初宣布 jquery-tmpl 插件将作为 1.5 版本的一部分包含在 jQuery 核心,但该插件和今天一样,仍处于 Beta 1 阶段。因此,当去年 12 月真正评估 1.5 的新功能时,它还没有准备好被包含进来。考虑到我们上面解释的内容,我们希望很清楚的是,我们计划在不久的将来不将模板直接包含在核心。jQuery UI 模板插件将是一个独立的插件,不依赖于 jQuery UI 的任何其他部分,并将成为项目“官方”支持的唯一模板解决方案,尽管 jQuery 当然会继续与任何输出良好老式 HTML 字符串的 JavaScript 模板引擎协作。

jQuery 1.6 Beta 1 发布

发布于 作者

我们正在接近 jQuery 1.6 的完成!我们想发布一个测试版,这样每个人都可以开始在他们的应用程序中测试代码,确保没有重大问题。

jQuery 1.6 Beta 1

您可以从 jQuery CDN 获取代码

您可以通过将该代码放入您现有的应用程序并告知我们是否有任何不再起作用的功能来帮助我们。请提交错误报告,并确保您提到您正在针对 jQuery 1.6 Beta 1 进行测试。

我们希望鼓励社区中的每个人尝试并 参与 贡献回 jQuery 核心。我们已经建立了一个 完整页面 的信息,专门用于更深入地参与团队。团队就在这里,随时准备帮助你帮助我们!

jQuery 1.6 Beta 1 更改日志

1.6 版本的当前更改日志。

  • #6782 优化了 innerHTML 的正则表达式,允许更多 HTML 代码片段使用更快的 方法。
  • #7328 获取 data- 属性时,根据 W3C HTML5 规范将嵌入的连字符大写。
  • #4146 修复了输入元素 width/height 属性的不一致问题。
  • #7345 添加了对 .css() 中显式/相对字符串值的 支持。
  • #7783 修复了 $.proxy 使其像(并使用)Function.prototype.bind 一样 工作。
  • #8753 允许在 jQuery.Event 对象上显式定义特殊属性。
  • #7587 在 $.parseJSON 上绕过正则表达式过滤器,如果 window.JSON.parse 可用, 使用本机抛出的异常。
  • #8150 修复了在 IE6/7 中删除 width 和 height 属性时,将它们设置为 “” 实际上 会将其设置为 0 而不是 auto 的问题。
  • #6562 修复了如果 DOM 节点具有 ID “target”,并且您尝试设置 target,它 将失败的问题。
  • #8744 确保即使存在 readyState,脚本传输中止方法也实际上会删除脚本标记。
  • #8712 当自定义事件被触发时,将它们冒泡到窗口。
  • #8635 修复了 Firefox 中的未捕获异常,并删除了不必要的“手动”垃圾回收。
  • #8568 修复了实时事件回调在事件 liveHandler 函数中可能乱序的问题。
  • #8417 禁用 $.ajax() JSON POST 的 JSONP 替换。
  • #8099 修复了 SPAN 元素在 show() 上变为块级元素的问题。
  • #8593 修复了当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用 两次的问题。
  • #8402 修复了实现 window.getComputedStyle 的浏览器完全忽略 jQuery.css() 中的 “fixed 属性”的问题。这使得 jQuery.cssProps 的实现更加通用。
  • #8401#8403 .修复了 jQuery 在设置透明度时 “强推” 其他 IE 过滤器的问题。
  • #7071 修正了在 IE 上访问 VML 元素的 'type' 属性失败的问题。
  • #4321 修复了 $(“#”) 在 Opera 9.6 上返回 “undefined” 并抛出异常的问题。
  • #7883 就像 .bind 一样,.delegate(和 .live)现在接受 false 作为 function(){return false;} 的快捷方式。
  • #2773 $.fn.is 和 $.fn.not 现在接受 DOM 元素和 jQuery 集合。
  • #8777 undelegate() 现在接受自定义命名空间事件。
  • #3116 .attr() 现在也适用于 SVG 规范的只读接口。
  • #8732 更改了对 focusin 事件支持的功能检测,以便 IE9 不会有重复的事件。
  • #7369 现在可以在具有属性的断开连接的节点上使用 .closest()。
  • #4366 修复了在 IE 中将 document.styleSheets 传递给 $.each 时失败的问题。
  • #7931 修正了 $.fn.scrollTop 和 $.fn.scrollLeft 设置器在空 jQuery 对象上调用时返回 null 的问题。
  • #8101 我们现在在它可用时使用 requestAnimationFrame 而不是 setInterval 来进行动画。
  • #8018 修复了对 frameElement 的不安全访问导致跨域 (i)frame 中出现错误的问题。
  • #6180 jQuery.clean 不再影响或修改类型不为 text/javascript 的脚本标记。
  • #3685 修正了之前在选择具有名为 “name” 的元素的表单时出现的故障。
  • #8790 对于触发但不是本机(即不应该有内联处理程序)的事件,我们应该为了优化目的立即退出。
  • #8814 修复了 core.js 中的一个小问题,我们不需要在回退 inArray 定义中检查 indexOf。
  • #7472#3113 修复了如果表单中的属性名称与属性类型(例如,id、name 等)相同,则会遇到冲突的问题。
  • #7054 确保事件处理程序中的 DOM 元素引用被 cleanData 删除,以避免 IE6/7/8 内存泄漏。
  • #8418 修复了 attr(“name”,”value”) 在 IE 7 中无法设置 name 属性值的问题。
  • #7996 修复了 Safari 5.0.3 在尝试对脚本标记使用 jQuery 的 .attr() 来访问名为 “event” 的属性时出现的错误。
  • #8772 修复了 IE9 无法优雅地处理设置不支持的输入类型(例如 ‘range’)的问题。
  • #4283 作为 .attr() 重写的部分,false 将删除布尔属性,例如 checked。
  • #8699 .attr() 现在不再在缺少属性时返回 -1,而是返回 undefined。
  • #6837 修正了 IE 在表单重置后无法返回 select 中默认/第一个项目的正确值,而是返回空字符串的问题。
  • #4464 修复了 IE 无法获取断开连接的 IMG 元素的 width 属性的错误。
  • #7485 修复了选择器没有返回所有具有该属性的元素的不一致问题,即使使用 attr() 方法检查时它返回一个值。

jQuery 1.5.2 发布

发布于 作者

jQuery 1.5.2 现已发布!这是在 jQuery 1.5 之上的第二个次要版本,它修复了许多 bug。

我们感谢以下为本版本提供补丁的贡献者:azatoth、dmethvin、gnarf37、jaubourg、jboesch、jeresig、jessthrysoee、mathiasbynens、murz、rdworth、rwldrn 和 timmywil。

我们特别感谢我们的错误分类团队,他们帮助缩小了本版本中一些重要修复所需的范围。

下载

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

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

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

Microsoft CDN: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js
Google CDN: https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.5.2/jquery.min.js

jQuery 1.5.2 更改日志

由于这是一个 bug 修复版本,因此没有新的功能要报告。

已关闭的工单

所有已关闭的 bug 和工单的完整列表如下:

  • #6158 修复了 replaceWith 在不存在的元素上抛出错误的问题。
  • #7340 我们现在使用单个捕获处理程序来模拟非 IE 浏览器上的 focusin/focusout 事件冒泡。允许本机 DOM 方法触发除当前活动事件之外的其他事件回 jQuery。
  • #8353 已回滚。在 resolveWith 中添加一个 catch 块,以便 finally 块在 IE7 和 IE6 中执行。修复了 #8438 - Google Chrome 中调试时,完整函数堆栈不可见的问题。
  • #8380 使 $(‘:text’) 匹配 <input>,因为 ‘type=text’ 是隐含的默认值。
  • #8421 确保 resolveWith 只能用一个参数调用。
  • #8423 永远不要为跨域请求自动设置 X-Requested-With 标头。修复了所有跨域 ajax 请求都被预检并且需要额外选项的问题。
  • #8456 修复了 trigger(‘mouseover’) 不再触发 mouseenter 的问题。我们确保父级不为空,然后再进入它的范围,因此在鼠标悬停事件上触发 mouseenter。
  • #8509 使 URL 正则表达式不那么过度热心,并确保它识别不包含符合层次结构的 URL 方案(根据 http://www.ietf.org/rfc/rfc2718.txt 中的第 2.1.2 节)。还将 about: 和 adobe air 的 app: 和 app-storage: 添加到本地协议列表中,并在 document.location 格式错误的情况下提供故障转移。
  • #8536 在 GitHub 上的 jQuery 存储库中引入了子模块。
  • #8381 修复了 .is(“div”) 在 IE 9 中对断开连接的节点起作用的问题。
  • #8316 修复了 WebKit 中固定元素上的 .offset() 设置器。
  • #3333 修复了 WebKit 中不正确的 .css(“marginRight”)。
  • #8692 修复了 arguments 对象有时在 $.when 方法之外会带有 undefined 值的问题。
  • #8346 修复了 jQuery.camelCase() 和 IE9 前缀的兼容性问题。
  • #8203 删除了为了 IE 内存清理而进行的一些不必要的元素清空操作。
  • #8519 阻止核心 makefile 在代码实际上没有任何变化的情况下应用压缩。
  • #8587 修复了 jQuery-git.js cron 作业,以确保它定期更新。
  • #8635 修正了 Firefox 3.6 中的一个问题,其中 getComputedStyle() 的问题导致未捕获异常。

jQuery 1.5.2 RC 1 发布

发布于 作者

jQuery 1.5 的第二个更新进展顺利 - 我们很高兴地宣布发布第一个候选版本! 除非出现重大错误,否则这应该是我们最终为 jQuery 1.5.2 发布的代码(将在 3 月 31 日发布)。

jQuery 1.5.2 候选版本 1

您可以从 jQuery CDN 获取代码

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

我们希望鼓励社区中的每个人尝试并 参与 贡献回 jQuery 核心。我们已经建立了一个 完整页面 的信息,专门用于更深入地参与团队。团队就在这里,随时准备帮助你帮助我们!

jQuery 1.5.2 RC 1 变更日志

1.5.2 版本的当前变更日志。

  • #6158 修复了 replaceWith 在不存在的元素上抛出错误。
  • #7340 我们现在使用单个捕获处理程序来模拟非 IE 浏览器上的 focusin/focusout 事件冒泡。允许本机 DOM 方法触发除当前活动事件之外的其他事件回 jQuery。
  • #8353 已回滚。在 resolveWith 中添加一个 catch 块,以便 finally 块在 IE7 和 IE6 中执行。修复了 #8438 - Google Chrome 中调试时,完整函数堆栈不可见的问题。
  • #8380 使 $(‘:text’) 匹配 <input>,因为 ‘type=text’ 是隐含的默认值。
  • #8421 确保 resolveWith 只能用一个参数调用。
  • #8423 永远不要为跨域请求自动设置 X-Requested-With 标头。修复了所有跨域 ajax 请求都被预检并且需要额外选项的问题。
  • #8456 修复了 trigger(‘mouseover’) 不再触发 mouseenter 的问题。我们确保父级不为空,然后再进入它的范围,因此在鼠标悬停事件上触发 mouseenter。
  • #8509 使 URL 正则表达式不那么过分,并确保它识别不包含符合分层结构的 URL 方案(根据 #http://www.ietf.org/rfc/rfc2718.txt 的第 2.1.2 节)。 此外,将 about: 和 adobe air 的 app: 和 app-storage: 添加到本地协议列表,并在 document.location 格式错误的情况下提供故障转移。
  • #8536 在 GitHub 上的 jQuery 存储库中引入了子模块。
  • #8381 修复了 .is(“div”) 在 IE 9 中对断开连接的节点起作用的问题。
  • #8316 修复了 WebKit 中固定元素上的 .offset() 设置器。
  • #3333 修复了 WebKit 中不正确的 .css(“marginRight”)。

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 类型的 MIME 类型。
  3. xhrFields 用于在本地 XHR 对象上设置 fieldName-fieldValue 对映射。 例如,您可以使用它在跨域请求时将 withCredentials 设置为 true(如果需要)。

已关闭的工单

所有已关闭的 bug 和工单的完整列表如下:

  • #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 修复了 live(‘click’) 在 IE 中先绑定 live(‘submit’) 时不触发的问题。
  • #7945 使 jQuery.param() 正确序列化具有名为 jquery 的属性的普通对象。
  • #8033 jQuery 1.4.4+ 无法在具有旧版 Prototype(<= 1.5)或当前 Prototype + Scriptaculous 的页面上加载,尤其在 IE 中。
  • #8039 带有 HTML5 输入类型的选择器在 IE6/7 中不起作用。
  • #8052 更新 jQuery.support.noCloneEvent 测试,使其在 IE9 中正常工作。
  • #8095 正确处理需要绕过浏览器缓存的情况,同时服务器端逻辑仍然提供正确的 304 响应。 已添加单元测试。
  • #8098 在可用时使用快速 document.head。
  • #8099 始终根据元素的预期默认显示值还原到正确的显示值。
  • #8107 修复了 $.ajax 的参数处理,用于多个方法签名,并添加了测试用例。
  • #8108 针对 jQuery 元数据在使用 JSON.stringify 序列化时暴露在普通 JS 对象上的临时修复,以避免破坏兼容性的更改。 针对此问题的正确修复将在 1.6 中发布。
  • #8115 将代码中所有对 jXHR 的引用重命名为 jqXHR(如文档中所做的那样)。
  • #8123 .clone() 的默认值为不克隆任何事件。
  • #8125 当 location.protocol 为“file:”时,将状态设置为 200 用于状态为 0 的请求。 已添加 test/localfile.html 以控制其正常工作。
  • #8129 修复了在 IE8 中克隆多个选定选项的问题。
  • #8135 确保在 Firefox 尝试访问 XMLHttpRequest 属性时(发生网络错误时)抛出的任何异常都被捕获并作为错误通知。 已添加 test/networkerror.html 以测试此行为。
  • #8138 仅在加载时访问 document.location 一次,如果失败(在 IE 中设置 document.domain 后会抛出异常),则使用 A 元素的 href 代替。
  • #8145 添加了 readyWait 测试。
  • #8146 引入了 xhrFields 选项,它是一个 fieldName/fieldValue 对的映射,用于在本地 xhr 上设置。 可以使用它在跨域请求时将 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”上不会触发鼠标离开事件。
  • #8219 引入了 mimeType 选项,用于在转换中覆盖 content-type 标头(并在可能的情况下在本地 xhr 中覆盖)。 在 jqXHR 对象上添加了配套的 overrideMimeType 方法(它只是设置了该选项)。
  • #8220 从标签名称过滤器中删除反斜杠。
  • #8245 Ajax 现在确保标头名称大写,以便不符合规范的 xhr 实现不会覆盖它们。
  • #8250 ajax 在 Opera 10 小部件中不起作用。
  • #8277 将 data 设置为 undefined 而不是 null(如果在 ajax 帮助器中未提供它),以防止在 ajaxSettings 中设置的数据被使用。
  • #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 修复了 live(‘click’) 在 IE 中先绑定 live(‘submit’) 时不触发的问题。
  • #7945 使 jQuery.param() 正确序列化具有名为 jquery 的属性的普通对象。
  • #8033 jQuery 1.4.4+ 无法在具有旧版 Prototype(<= 1.5)或当前 Prototype + Scriptaculous 的页面上加载,尤其在 IE 中。
  • #8039 带有 HTML5 输入类型的选择器在 IE6/7 中不起作用。
  • #8052 更新 jQuery.support.noCloneEvent 测试,使其在 IE9 中正常工作。
  • #8095 正确处理需要绕过浏览器缓存的情况,同时服务器端逻辑仍然提供正确的 304 响应。 已添加单元测试。
  • #8098 在可用时使用快速 document.head。
  • #8099 始终根据元素的预期默认显示值还原到正确的显示值。
  • #8107 修复了 $.ajax 的参数处理,用于多个方法签名,并添加了测试用例。
  • #8108 针对 jQuery 元数据在使用 JSON.stringify 序列化时暴露在普通 JS 对象上的临时修复,以避免破坏兼容性的更改。 针对此问题的正确修复将在 1.6 中发布。
  • #8115 将代码中所有对 jXHR 的引用重命名为 jqXHR(如文档中所做的那样)。
  • #8123 .clone() 的默认值为不克隆任何事件。
  • #8125 当 location.protocol 为“file:”时,将状态设置为 200 用于状态为 0 的请求。 已添加 test/localfile.html 以控制其正常工作。
  • #8129 修复了在 IE8 中克隆多个选定选项的问题。
  • #8135 确保在 Firefox 尝试访问 XMLHttpRequest 属性时(发生网络错误时)抛出的任何异常都被捕获并作为错误通知。 已添加 test/networkerror.html 以测试此行为。
  • #8138 仅在加载时访问 document.location 一次,如果失败(在 IE 中设置 document.domain 后会抛出异常),则使用 A 元素的 href 代替。
  • #8145 添加了 readyWait 测试。
  • #8146 引入了 xhrFields 选项,它是一个 fieldName/fieldValue 对的映射,用于在本地 xhr 上设置。 可以使用它在跨域请求时将 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”上不会触发鼠标离开事件。
  • #8219 引入了 mimeType 选项,用于在转换中覆盖 content-type 标头(并在可能的情况下在本地 xhr 中覆盖)。 在 jqXHR 对象上添加了配套的 overrideMimeType 方法(它只是设置了该选项)。
  • #8220 从标签名称过滤器中删除反斜杠。
  • #8245 Ajax 现在确保标头名称大写,以便不符合规范的 xhr 实现不会覆盖它们。
  • #8250 ajax 在 Opera 10 小部件中不起作用。
  • #8277 将 data 设置为 undefined 而不是 null(如果在 ajax 帮助器中未提供它),以防止在 ajaxSettings 中设置的数据被使用。
  • #8297 确保正确处理具有空值的响应标头,并且不会阻止正确解析整个响应标头字符串。