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 中,对窗口或文档使用 .attr() 方法不起作用,因为窗口和文档不能具有属性。它们包含属性(如 location 或 readyState),应该使用 .prop() 或简单的原生 JavaScript 进行操作。在 jQuery 1.6.1 中,.attr() 将为窗口和文档委托给 .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()

对于获取/设置value,不要使用 .attr().prop()。请改用 .val() 方法(尽管使用 .attr(“value”, “somevalue”) 仍然可以工作,就像在 1.6 之前一样)。

首选用法的总结

对于布尔属性/属性以及在 HTML 中不存在的属性(如 window.location),应该使用 .prop() 方法。所有其他属性(在 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:在生成 input 元素时,attr 方法的行为很奇怪。
  • #9129:jQuery 不支持枚举属性,例如 contenteditable
  • #9191:单选按钮的 attr checked 错误

数据

  • #9124:$.data 的更改在某些情况下不合理
  • #9126:jquery 在使用严格模式时出现故障

延迟对象

  • #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 中的选择器或 find 错误
  • #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: 当 POST 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 中,布尔属性(如 selected、checked 等)现在可以通过将 truefalse 传递给 .attr() 来切换,以添加或删除它们。例如

$("#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 元素的宽度属性
  • #4978: jQuery.prop 缺少 cellpadding?
  • #5413: 标签 “img” 的宽度/高度属性为零 (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’); 错误
  • #8117: .removeAttr 无法与 select 元素的 size 属性一起使用
  • #8150: Webkit 和 Firefox 中的 removeAttr 问题
  • #8255: 支持 list 属性
  • #8418: 使用 attr() 方法在 IE 7 中设置 name 参数
  • #8457: attrHooks
  • #8570: .val 方法对 IE9 中动态创建的单选按钮返回 “on”
  • #8699: .attr() 在缺少属性时返回 -1 而不是 undefined
  • #8772: 使用 .attr() 设置 input 类型为 ‘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’ ) 访问

延迟对象

deferred.always()

在 1.5 中,当您想在延迟对象被解决或拒绝时执行完全相同的操作时,您必须使用命名函数并将其两次传递给 “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: 如果通过 live 绑定,则 Mouseenter 和 mouseleave 事件无法触发
  • #6913: 命名空间事件冒泡错误
  • #6993: .bind() 和 .one() 不允许函数作为数据
  • #7071: 访问 VML 元素的 ‘type’ 属性在 IE 中失败
  • #7883: .delegate (和 .live) 应该接受 false 作为 fn 参数,就像 .bind 一样
  • #8018: 对 frameElement 的不安全访问会导致跨域 (i)frame 中的错误
  • #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: jQuery .offset 当当前偏移量为浮点数 (这在 FireFox 中是可能的) 时无法正常工作。
  • #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: $(“#”) 返回 undefined
  • #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(” “) 的结果为 undefined

jQuery 1.6 RC 1 发布

发布时间: 作者:

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

您可以从 jQuery CDN 获取代码

您可以通过将该代码放入您的现有应用程序中并告诉我们是否出现任何问题来帮助我们。请提交 bug,并确保您提到您正在针对 jQuery 1.6 RC 1 进行测试。

我们鼓励社区中的每个人尝试 参与 为 jQuery 核心做出贡献。我们已经创建了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队随时准备帮助您帮助我们!

jQuery 1.6 RC 1 变更日志

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

Ajax

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

属性

  • #3786: removeAttr 应该使用 jQuery.props
  • #4283: .attr(‘checked’) & XHTML 1.1 Strict
  • #4464: IE 无法获取已分离 IMG 元素的宽度属性
  • #4978: jQuery.prop 缺少 cellpadding?
  • #5413: 标签 “img” 的宽度/高度属性为零 (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’); 错误
  • #8117: .removeAttr 无法与 select 元素的 size 属性一起使用
  • #8150: Webkit 和 Firefox 中的 removeAttr 问题
  • #8255: 支持 list 属性
  • #8418: 使用 attr() 方法在 IE 7 中设置 name 参数
  • #8457: attrHooks
  • #8570: .val 方法对 IE9 中动态创建的单选按钮返回 “on”
  • #8699: .attr() 在缺少属性时返回 -1 而不是 undefined
  • #8772: 使用 .attr() 设置 input 类型为 ‘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: 如果通过 live 绑定,则 Mouseenter 和 mouseleave 事件无法触发
  • #6913: 命名空间事件冒泡错误
  • #6993: .bind() 和 .one() 不允许函数作为数据
  • #7071: 访问 VML 元素的 ‘type’ 属性在 IE 中失败
  • #7883: .delegate (和 .live) 应该接受 false 作为 fn 参数,就像 .bind 一样
  • #8018: 对 frameElement 的不安全访问会导致跨域 (i)frame 中的错误
  • #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: jQuery .offset 当当前偏移量为浮点数 (这在 FireFox 中是可能的) 时无法正常工作。
  • #8060: 将 checked 设置为 true 时,断开的复选框在附加到 DOM 之后不会保留。
  • #8500: 单选按钮和复选框在 IE 中被包裹后会恢复到默认 (HTML) 状态

杂项

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

偏移量

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

选择器

  • #3685: 选择器对包含名为“name”的元素的表单不起作用
  • #4321: $(“#”) 返回 undefined
  • #8105: :focus 选择器过滤器

遍历

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

官方插件: 路线图的变更

发布时间: 作者:

仅仅六个月前,我们宣布将三个主要由微软开发的插件 - 模板、数据链接和全球化 - 作为官方插件采用,并根据 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插件已经取得了进展,但这实际上是一个让我们可以与社区(包括微软)共同开发一个有效且灵活的实现的机会。“官方插件”微软一直在开发的插件一直处于测试状态,可能会发生变化,并计划在测试版 2 版本中进行重大修改,但我们认识到(并感谢)那些已经加入并开始尝试和在应用程序中使用它们的开发人员。UI 团队仍在为模板和全球化插件的早期规划阶段,我们邀请您访问规划 wiki并分享您对开发的看法。

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

我们意识到,其中一些细节可能看起来不稳定或只是组织上的,但我们知道,在这些变化发生时告诉社区这些变化很重要,这样您就可以尽快做出对应用程序最有利的决定。我们希望您理解我们为什么必须做出这些调整,并鼓励您参与进来,帮助我们推进这些重要的项目!

附录: 为什么模板没有出现在 1.5 中?

虽然我们最初宣布 jquery-tmpl 插件将成为 jQuery 核心 1.5 版本的一部分,但该插件仍然像今天一样处于测试版 1 阶段。因此,当去年 12 月真正需要评估 1.5 的新功能时,它并没有被认为已准备好包含在内。鉴于我们上面解释的内容,我们希望很清楚的是,我们不打算在短期内直接将模板包含在核心版本中。jQuery UI 模板插件将是一个独立的插件,不依赖于 jQuery UI 的任何其他部分,并将成为项目“正式”支持的唯一模板解决方案,尽管 jQuery 当然会继续与任何生成良好的、传统的 HTML 字符串的 JavaScript 模板引擎一起使用。

jQuery 1.6 测试版 1 发布

发布时间: 作者:

我们即将完成 jQuery 1.6 的开发! 我们希望发布一个测试版,以便每个人都可以在自己的应用程序中开始测试代码,确保没有重大问题。

jQuery 1.6 测试版 1

您可以从 jQuery CDN 获取代码

您可以通过将该代码放入您的现有应用程序中并告诉我们是否出现任何问题来帮助我们。请提交 bug,并确保您提到您正在针对 jQuery 1.6 测试版 1 进行测试。

我们鼓励社区中的每个人尝试 参与 为 jQuery 核心做出贡献。我们已经创建了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队随时准备帮助您帮助我们!

jQuery 1.6 测试版 1 变更日志

1.6 版本的当前变更日志。

  • #6782 优化 innerHTML 的正则表达式,以允许更多 html 片段使用更快的 方法。
  • #7328 获取 data- 属性时,根据 W3C HTML5 规范对嵌入的连字符进行首字母大写。
  • #4146 修复了输入元素的 width/height 方面的不一致性。
  • #7345 在 .css() 中添加对显式/相对字符串值的支持。
  • #7783 修复了 $.proxy 以使其像(并使用)Function.prototype.bind 一样工作。
  • #8753 允许在 jQuery.Event 对象上显式定义特殊属性。
  • #7587 如果 window.JSON.parse 可用,则绕过 $.parseJSON 的正则表达式过滤器并使用本机抛出的异常。
  • #8150 修复了在 IE6/7 中删除 width 和 height 属性时,将它们设置为“”实际上会设置为 0 而不是 auto 的问题。
  • #6562 修复了如果 DOM 节点具有 ID 为“target”,并且您尝试设置目标会失败的问题。
  • #8744 确保脚本传输 abort 方法即使存在 readyState 也确实删除了脚本标签。
  • #8712 当自定义事件被触发时,将它们冒泡到窗口。
  • #8635 修复了 Firefox 中的未捕获异常,并删除了不必要的“手动”垃圾回收。
  • #8568 修复了在 live 事件回调中,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 修正了当在空 jQuery 对象上调用时,$.fn.scrollTop 和 $.fn.scrollLeft 两个 setter 都返回 null 的问题。
  • #8101 现在我们使用 requestAnimationFrame 而不是 setInterval 来执行动画,如果它可用的话。
  • #8018 修复了在跨域 (i)frame 中,对 frameElement 的不安全访问会导致错误的问题。
  • #6180 jQuery.clean 不会再影响或修改类型不是 text/javascript 的脚本标签。
  • #3685 修正了之前在选择具有名为“name”的元素的表单时出现的错误。
  • #8790 对于触发但不是原生(即不应该有内联处理程序)的事件,我们应该立即退出以进行优化。
  • #8814 修正了 core.js 中的一个小问题,我们不需要在 fallback 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。

我们还要特别感谢我们的 bug 评审团队,他们帮助缩小了本版本中需要修复的一些重要问题。

下载

像往常一样,我们提供了两个版本的 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 块,以便在 IE7 和 IE6 中执行 finally 块。修复了 #8438 - 在 Google Chrome 中调试时,完整函数堆栈不可见的问题。
  • #8380 使 $(‘:text’) 匹配 <input>,因为 ‘type=text’ 是隐含的默认值。
  • #8421 确保 resolveWith 可以仅使用一个参数调用。
  • #8423 从不对跨域请求自动设置 X-Requested-With 头部。修复了所有跨域 ajax 请求都被预检并需要额外选项的问题。
  • #8456 修复了 trigger(‘mouseover’) 不再触发 mouseenter 的问题。我们确保父级不为空,然后再爬到它的大腿上,因此在 mouseover 事件上触发 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() setter。
  • #3333 修复了 WebKit 中 .css(“marginRight”) 错误的问题。
  • #8692 修复了参数对象有时会在 $.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 的第二个更新进展顺利 - 我们很高兴地宣布第一个候选版本的发布!如果没有出现重大 bug,这应该就是我们最终用于 jQuery 1.5.2 的代码(将在 3 月 31 日发布)。

jQuery 1.5.2 候选版本 1

您可以从 jQuery CDN 获取代码

您可以通过将该代码放入您现有的应用程序中并告知我们是否出现任何问题来帮助我们。请 提交 bug,并确保您提到了您正在针对 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 块,以便在 IE7 和 IE6 中执行 finally 块。修复了 #8438 - 在 Google Chrome 中调试时,完整函数堆栈不可见的问题。
  • #8380 使 $(‘:text’) 匹配 <input>,因为 ‘type=text’ 是隐含的默认值。
  • #8421 确保 resolveWith 可以仅使用一个参数调用。
  • #8423 从不对跨域请求自动设置 X-Requested-With 头部。修复了所有跨域 ajax 请求都被预检并需要额外选项的问题。
  • #8456 修复了 trigger(‘mouseover’) 不再触发 mouseenter 的问题。我们确保父级不为空,然后再爬到它的大腿上,因此在 mouseover 事件上触发 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() setter。
  • #3333 修复了 WebKit 中 .css(“marginRight”) 错误的问题。

jQuery 大会 2011:旧金山湾区 - 演讲者和演讲

发布日期: 作者:

演讲者

目前,我们在 演讲者页面 上列出了 28 位演讲者和培训师,参加 2011 年 4 月 16-17 日在旧金山湾区举行的 jQuery 大会。演讲者包括 **John Resig、Richard D. Worth、Todd Parker、Steve Souders、Nicholas Zakas、Garann Means、Darcy Clarke、Estelle Weyl、Matt Kelly** 以及 更多人

请务必访问 活动网站,详细了解我们的演讲者。

演讲

我们还发布了 日程安排,28 场演讲中的 25 场已经安排好。我们将在接下来的几周内填补剩余的空缺(查看我们的 推特账号,获取最新信息)。

以下列出了一些您今年将看到的一些演讲。

  • jQuery 主题演讲
  • jQuery UI 主题演讲
  • jQuery Mobile
  • Deferreds - 让惰性发挥作用
  • 将代码质量工具集成到您的 jQuery 开发工作流程中
  • 使用 Polyfills 和 Shims 来填补 HTML5 和 CSS3 的空白
  • 利用 jQuery 模板和 jQuery 数据链接来构建动态数据驱动的浏览器应用程序
  • 演示 jQuery
  • jQuery UI 小部件工厂:WAT?
  • 移动性能
  • 还有更多

请务必点击 演讲标题和演讲者姓名 阅读相关的摘要和传记。

大会前培训

不要忘记我们在 4 月 15 日提供的培训课程。 了解更多信息

注册

门票销售火爆,请务必立即购买您的门票。访问我们的 注册页面,了解如何成为下一届 jQuery 大会的一部分。

jQuery 大会 2011 - 大会前培训

发布日期: 作者:

从去年旧金山湾区大会开始,应广大需求,我们开始提供大会前的培训。 我们将在 4 月 15 日再次提供大会前的培训为即将到来的 jQuery 大会 2011:旧金山湾区 提供培训,但今年首次开设两个独立的课程:初级和高级。

由 Bocoup 提供的 jQuery 入门

BocoupBocoup 去年在波士顿提供了一系列高级和黑客日培训课程,以及大会前的 jQuery 入门课程,这些课程也获得了极大关注。 我们很高兴地宣布,Bocoup 将再次提供 jQuery 入门课程。

来自 Bocoup.com

培训将由 Ben Alman(jQuery 插件大师)和 Adam Sontag(yayQuery 大师)主讲,旨在使学员对 jQuery API、开发技巧和最佳实践有一个基本的了解。此外,学员还将学习 jQuery UI 和 jQuery Mobile,并了解如何使用自定义插件扩展 jQuery。

与往常一样,培训课程的票数有限,而且销售很快。 如果您想参加这个课程,请尽快报名。

初级培训门票为 299 美元(外加 Eventbright 手续费),所有收入将直接捐赠给 jQuery 项目。

请务必感谢 Bocoup 的支持。

由 Jupiter JavaScript Consulting 提供的高级 jQuery

Bocoup今年新增了高级 jQuery 培训课程,我们很高兴邀请 Jupiter JavaScript Consulting 主讲该课程。JuptierJS 构建并维护 JavaScriptMVC,在构建复杂的 jQuery 应用程序方面拥有丰富的经验。

来自 jupiterjs.com

以下是我们想涵盖的主题的粗略列表。 我将它们列在这里,以接近层次结构的形式。 但实际上,我们将在一天的课程中涵盖大多数主题。

  • 应用程序设计
  • 瘦服务器架构
  • 状态管理
  • 支持历史记录的网站
  • 小部件设计
  • 事件驱动架构
  • 自定义事件
  • 发布-订阅
  • 事件委托
  • 1-2-3 层 / 关注点分离
  • 组织 Ajax 和领域模型
  • Deffereds
  • Ajax 固定装置
  • 客户端模板
  • 完美的 jQuery 插件
  • 原型继承
  • 文件/文件夹组织
  • 依赖管理
  • 生产构建
  • 测试
  • QUnit、Jasmine、Selenium、FuncUnit、Waitr 等
  • 高性能 jQuery
  • 更多设计评审

是的,这将涵盖很多内容!所以来吧,准备好接受你的思维被颠覆吧(如果你想学习其他内容,请告诉我)。

与往常一样,培训课程的票数有限,而且销售很快。 如果您想参加这个课程,请尽快报名。

高级培训门票为 399 美元(外加 Eventbright 手续费),所有收入将直接捐赠给 jQuery 项目。

请务必感谢 Jupiter JavaScript Consulting 的支持。

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。

我们还要特别感谢我们的 bug 评审团队,他们帮助缩小了本版本中需要修复的一些重要问题。

下载

像往常一样,我们提供了两个版本的 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 确保在 IE 中 form.reset() 之后 .val() 工作正常
  • #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 确保捕获到 Firefox 在尝试访问网络错误发生时 XMLHttpRequest 属性时抛出的任何异常,并将其通知为错误。添加了 test/networkerror.html 来测试此行为
  • #8138 仅在加载时访问一次 document.location,如果失败(当 document.domain 已经设置时,IE 中会抛出异常),我们将使用 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 修复了 prefilter 中的中止。即使全局选项设置为 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 在 ajax 帮助程序中未提供数据时,将数据设置为 undefined 而不是 null,这样就不会阻止在 ajaxSettings 中设置的数据被使用。
  • #8297 确保正确处理具有空值的响应头,并且不会阻止正确解析整个响应头字符串。
  • #8353 在 resolveWith 中添加了一个 catch 块,以便 finally 块在 IE7 和 IE6 中执行。
  • #8365 确保 IE 9 仍然克隆属性。