即将举行的 jQuery 活动

发布日期: 作者:

jQuery Summit 2011

又到了那一年(不是圣诞节!,几乎比圣诞节更棒!) - 每年一度的(在线)jQuery Summit。今年 Environment For Humans (E4H) 有一个很棒的阵容,包括关于 jQuery 插件编写最佳实践、使用 HTML5 和 Popcorn.js 创建交互式体验以及测试 jQuery 代码的最佳实践等方面的会议。

在网络上经验最丰富的 jQuery 和 JavaScript 专业人士分享技巧、窍门和他们的经验,你一定会学到一些新的东西,这些东西可以帮助你完成自己的项目。如果你以前没有参加过峰会,那你可要好好享受一下了。

峰会是一个完全在线的双轨会议,在两天内进行,一条轨道专门针对设计师,另一条轨道完全专注于开发人员。由于活动完全在线,无论你是在家还是在办公室,都可以实时访问它。对于那些担心错过任何内容的人,E4H 已经为你准备好了;所有门票都包含高质量的录音,你可以随时回放。

折扣

如果你有兴趣参加,E4H 为我们提供了一个非常特殊的 20% 折扣码,可以在他们的活动网站上兑换。购买门票时只需输入20JQUERY 或使用以下链接:http://jquerysummit2011.eventbrite.com/?discount=20JQUERY

详情

会议

  • jQuery 和 CSS 选择器 - Estelle Weyl
  • jQuery 和 HTML5 视频 - Rick Waldron
  • jQuery UI - Andrew Wirick
  • 插件编写最佳实践 - Ben Alman
  • jQuery 和浏览器插件 - Sarah Chipps
  • 渐进增强 - Nicholas Zakas
  • jQuery 和响应式网页设计 - Dave Rupert
  • jQuery 的现状 - Adam Sontag
  • 大型应用程序架构 - Addy Osmani
  • jQuery 和 iframe 编程 - Ben Vinegar
  • 构建基于 DOM 的应用程序 - Garann Means
  • Deferreds 到 jQuery - Dan Heberden
  • jQuery 开发工作流程 - Anton Kovalyov
  • jQuery 和 Backbone.js - Matt Kelly
  • jQuery 和 QUnit - Ben Alman

门票:http://jquerysummit.com

日期

设计师轨道:星期二,11 月 15 日

开发者轨道:星期三,11 月 16 日

 

Bocoup 的 jQuery 培训

对于那些喜欢面对面培训的人来说,团体培训是提高 jQuery 技能的最佳方法之一。幸运的是,总部位于波士顿的 Bocoup 已经为 2012 年 1 月和 3 月安排了多项此类全面的 jQuery 培训课程。

会议将在波士顿的 Bocoup Loft 举行,10% 的利润将直接捐赠给 jQuery 基金会。如有兴趣,请立即报名,因为班级人数有限!。

有关更多信息,请查看 http://training.bocoup.com/comprehensive-jquery/

 

HTML5、JavaScript 和 jQuery 的前端研讨会

最后,如果你有兴趣学习更多通用前端技能,Marc Grabanski 正在为希望在前端开发领域获得精通的开发人员举办一个前端大师研讨会系列。

培训由六个研讨会组成,将重点关注前端主题,包括 jQuery、jQuery UI、HTML5 和 CSS3、Titanium Mobile 以及使用 jQuery 团队成员 Karl Swedberg 和 Scott Gonzalez 作为演讲嘉宾构建大型 JavaScript 应用程序。

有关门票和更多信息,请访问 http://frontendmasters.com

构建更精简的 jQuery

发布日期: 作者:

jQuery 现在已经超过 5 年了!在这段时间里,它与它所服务的浏览器、网站、设备、开发人员和用户一起发展。它也,嗯,增长了不少。jQuery 添加了许多有用的功能,但也积累了一些我们希望永远不会支持的累赘。在台式机上,使用高速连接可能不是问题,但我们希望 jQuery 成为移动设备的良好解决方案。

除了我们不断追求更高性能之外,我们对未来版本的优先事项是减小压缩后的文件大小。当每个新功能或错误修复必须同时保留所有现有功能和行为时,这样做很困难。因此,今天我们想开始一个关于通过弃用一些功能来精简 jQuery API 的对话。以下是我们的弃用指南

  • 我们认为该功能不代表目前使用 jQuery 的最佳实践。
  • 该功能已被证明在实际使用中不受欢迎、令人困惑、效率低下或无效。
  • 增强该功能或解决其局限性并不实际或可行。
  • 在将来某个时间将其移除可能会带来显著的可用性、大小或性能优势。

弃用仅仅是你可以参与的流程中的第一步。我们的目标是

  • 解释弃用特定功能的原因,如上所述。
  • 在弃用和移除之间至少提供一个主要版本,通常更多。
  • 提供弃用功能的替代方案,以便迁移不那么痛苦。
  • 倾听社区关于弃用和移除的反馈。

偶尔,就像 1.7 版本中的 event.layerX/layerY 的情况一样,如果我们判断立即移除该功能比保留该功能造成更少的痛苦,我们会以更短的通知时间进行重大更改。这些应该只是罕见的例外情况。

1.7 版本弃用

考虑到这些因素,我们认为以下功能从 1.7 版本开始已弃用。使用这些功能的现有代码仍然可以正常工作,但推荐的替代方案对于与未来版本兼容性更好。

.live() 和 .die():我们继续收到许多错误报告,并看到用户对 .live() 方法的怪癖感到困惑。常见问题现在已在其更新的 API 页面 上记录。我们强烈建议在新代码中使用 .on() 或 .delegate(),因为它们是更好的 API。鉴于其广泛使用,我们不太可能在 1.8 中移除此 API,但请尽快更新您的代码。

非标准事件属性:作为我们提高事件处理程序性能努力的一部分,我们还将弃用从原生事件对象复制到 jQuery 事件对象的几个事件属性,并在 1.8 中将其移除:attrChange、attrName、relatedNode 和 srcElement。不要通过event.NAME 访问它们,而应通过 event.originalEvent.NAME 访问它们(如果需要)。

$.ajax() Deferred 别名:在 1.5 版本中,我们在 jqXHR 对象上定义了 .error()/,success()/.complete() 作为 Deferred 的 .fail()/.done()/.always() 方法的别名。虽然这在当时似乎是个好主意,但这使得 jqXHR 成为一个非标准的 Deferred。这不好。只要可能,优先使用 deferred/promise 方法名称而不是 jqXHR 方法名称。我们仍然需要做一些工作才能提供完整的迁移路径,因此我们很可能会在 1.8 之后继续支持这些别名。

deferred.isResolved() 和 deferred.isRejected():现在 Deferred 和 Promises 拥有进度通知和一个方便的 .state() 方法,我们正在弃用这些旧方法,并将在 1.8 中将其移除。使用 N-1 个布尔方法来获取 N 状态对象的 state 是“二十个问题”的残忍代码版本。基于 Deferred 的代码很少需要检查 state,而现在返回的字符串对于调试场景(它通常用于调试场景)更方便。

.attr(“value”) 对输入:为了向后兼容,我们一直在这里返回当前值(如“输入框中当前的内容”),而不是真正的属性(HTML 中的 value 属性所指的内容)。这让我们无法提供真正的属性值,而且令人困惑,因为 W3C 选择器作用于属性,而不是当前值。因此,我们正在弃用此行为,并将在 1.8 中将其移除。始终使用 .val() 方法来获取输入元素的当前实时值。在我们可以回收属性之前,你可以使用 $("selector")[0].getAttribute("value"),除了 IE 6/7,它们仍然会返回当前值。(我们的 1.8 解决方案将在所有浏览器上获取属性值,这也是我们急于更改此方案的另一个原因。)

.closest(Array) 返回 Array:此签名有点奇怪,它最初是为旧的 live 事件代码创建的,但它返回的是 Array 而不是 jQuery 对象。从 1.8 版本开始,我们计划将其移除。.closest() 的其他签名将保留,不受影响。

.data(“events”):jQuery 将其事件相关数据存储在每个元素上名为(等一下)events 的数据对象中。这是一个内部数据结构,因此在 1.8 中,它将从用户数据命名空间中移除,因此不会与同名的项目发生冲突。jQuery 的事件数据仍然可以通过 jQuery._data(element, "events") 访问,但请注意,这是一个未记录的内部数据结构,不应修改。

$.sub() 作为插件:虽然 $.sub() 对于创建无干扰区域以供插件使用很有用,但它没有被 jQuery 核心使用,也没有被其他代码广泛使用,因此我们打算在 1.8 版本中将其转换为插件以节省空间。

展望 jQuery 1.8

鉴于我们对更精简的 jQuery 的追求,1.8 中新功能的过滤器将非常严格。即使是与性能相关的建议也需要权衡它们使用或节省的空间。可以通过插件、特殊事件、属性钩子或其他 jQuery 扩展机制实现的功能很可能暂时保持在核心之外。

这引出了一个问题,即我们可以在 1.8 中弃用什么,并最终将其移除以简化和简化库。这些东西不必完全消失;例如,它们可以移到单独的插件中,并且仅在需要时包含。看看你如何使用 jQuery,并与你的同事讨论一下。

几周内,我们将通过另一篇博客文章开始征求你关于 jQuery 1.8 的想法 - 所以现在就开始思考吧!

编辑:不,我们还没有移除 IE6 支持,而且我们不能这样做。正如 John Resig 在每次 jQuery 大会上提到的那样,IE6 的大多数罪行也发生在 IE7 和 IE8 上,它们加起来仍然占有三分之一以上的桌面浏览器市场份额。在我们可以同时淘汰 IE7 和 IE8 之前,移除对 IE6 的支持是没有意义的。

jQuery 1.7 发布

发布于

jQuery 1.7 现已发布!您可以从 jQuery CDN 获取代码

此新版本也将在一天或两天内在 Google 和 Microsoft CDN 上可用。

感谢您在测试阶段帮助测试和报告错误,我们相信我们已经发布了一个稳定可靠的版本。如果您发现问题,请 提交错误报告,并在版本选择中选择 jQuery 1.7。同时请提供一个 jsFiddle 测试用例,以便我们快速分析问题。

jQuery 1.7 中的新功能

API 站点的 版本 1.7 标签 是了解此版本中新功能的好方法。以下是对 1.7 中重要项目的概述,以及一些在 API 文档中尚未提到的内容。

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

新的 .on().off() API 统一了在 jQuery 中将事件附加到文档的所有方法——它们也更短!

$(elements).on( events [, selector] [, data] , handler );
$(elements).off( [ events ] [, selector] [, handler] );

当提供选择器时,.on() 类似于 .delegate(),因为它附加了一个由选择器过滤的委托事件处理程序。当选择器被省略或为 null 时,该调用类似于 .bind()。存在一个模棱两可的情况:如果 data 参数是一个字符串,则必须提供选择器字符串或 null,以便 data 不被误认为是选择器。将对象传递给 data,您将不必担心特殊情况。

所有现有的事件绑定方法(以及它们对应的解绑方法)在 1.7 中仍然存在,但我们建议您在任何您知道使用版本 1.7 或更高版本的 jQuery 项目中使用 .on()。以下是一些将旧 API 调用映射到新 API 调用的示例

$('a').bind('click', myHandler);
$('a').on('click', myHandler);

$('form').bind('submit', { val: 42 }, fn);
$('form').on('submit', { val: 42 }, fn);

$(window).unbind('scroll.myPlugin');
$(window).off('scroll.myPlugin');

$('.comment').delegate('a.add', 'click', addNew);
$('.comment').on('click', 'a.add', addNew);

$('.dialog').undelegate('a', 'click.myDlg');
$('.dialog').off('click.myDlg', 'a');

$('a').live('click', fn);
$(document).on('click', 'a', fn);

$('a').die('click');
$(document).off('click', 'a');

委托事件的性能提升

随着页面大小和复杂度的增加,事件委托变得越来越重要。像 Backbone、JavaScriptMVC 和 Sproutcore 这样的应用程序框架大量使用事件委托。考虑到这一点,jQuery 1.7 事件处理经过了重构,旨在使委托事件更快,特别是对于最常见的情况。

为了优化最常用选择器形式的代码,我们检查了来自 Google Codesearch 的代码片段。在 .live().delegate() 方法调用中使用的大约三分之二的选择器采用 tag#id.class 的形式,其中 tag、id 或 class 中的一个或多个被使用。通过在事件附加时在 JavaScript 中解析这些简单选择器,我们能够在事件传递期间超越浏览器 matchesSelector 的原生代码实现。对于更复杂的选择器,我们仍然使用 Sizzle 引擎,因此所有现有代码都应该继续工作。

最终结果是委托事件的传递速度大约是 1.6.4 的一半。

在 IE6/7/8 中更好地支持 HTML5

任何尝试使用新的 HTML5 标签(如 <section>)的人无疑都遇到过这样一个问题:IE 6/7/8 不仅不理解这些标签,而且还会将它们从文档中删除。在 jQuery 1.7 中,我们内置了对在旧版 IE 中使用 HTML5 标签的支持,方法是使用 .html() 等方法。这种支持与以前需要 innerShiv 相当。您仍然必须在旧版 IE 的文档头部包含 html5shiv (或 Modernizr) 才能支持 HTML5 标签。有关更多背景信息,请参阅 HTML5 Shiv 的故事

切换动画直观地工作

在以前的 jQuery 版本中,像 .slideToggle().fadeToggle() 这样的切换动画在动画相互叠加并且之前的动画使用 .stop() 终止时无法正常工作。这个问题在 1.7 中已经 修复,因此动画系统会记住元素的初始值,并在切换动画过早终止的情况下重置它们。

异步模块定义 (AMD)

jQuery 现在支持 AMD API。请注意,jQuery 1.7 本身 不是脚本加载器;它与 AMD 兼容的加载器(如 RequireJS 或 curl.js)协同工作,因此它可以动态加载,ready 事件可以由加载器控制。现在,AMD 兼容的加载器可以从 Google 或 Microsoft 等 CDN 加载未修改的 jQuery 1.7 版本。非常感谢 James Burke (@jrburke) 提交了补丁和单元测试,然后耐心地等待我们将其整合到代码中。

jQuery.Deferred

jQuery.Deferred 对象已扩展了新的进度处理程序和通知方法,这些方法会调用这些处理程序。这使您可以异步通知监听器请求中的进度,而无需解析或拒绝请求。此外,还有一个新的 state() 方法,它返回 Deferred 的当前状态;它主要用于调试。

Deferred 现在使用新的 jQuery.Callbacks 功能实现,这是一种将一系列处理程序排队和触发的通用方法。此功能可能对插件编写者有用,尽管 Deferred 和事件子系统为此类功能提供了更高级别的接口。

jQuery.isNumeric()

在 jQuery 内部,我们发现了一些我们需要知道一个参数是否为数字,或者如果它是其他类型,它是否能够成功转换为数字的情况。我们决定编写和记录 jQuery.isNumeric(),因为它是一个有用的工具。将任何类型的参数传递给它,它都会返回 truefalse,具体取决于情况。

已删除的功能

event.layerX 和 event.layerY:我们在版本 1.7 中删除了这些非标准属性。虽然我们通常会为这些属性进行弃用通知期,但 Chrome 版本 16 在页面上生成了大量的 控制台警告消息。因此,我们决定立即删除它们。在仍然支持这些属性的平台上,可以通过 event.originalEvent.layerXevent.originalEvent.layerY 来访问它们。

jQuery.isNaN():此未记录的实用程序函数已被删除。它令人困惑,因为它占用了一个内置 JavaScript 函数的名称,但没有相同的语义。新的 jQuery.isNumeric() 具有类似的用途,但它具有被记录和支持的优势。尽管 jQuery.isNaN() 未记录,但 Github 上的几个项目仍在使用它。我们已经联系了他们,并要求他们使用 jQuery.isNumeric() 或其他解决方案。

jQuery.event.proxy():此未记录且已弃用的方法已被删除。用户应该改为调用已记录的 jQuery.proxy 方法。

jQuery 团队,以及您的贡献

我要感谢我们团队的常规贡献者在发布此版本中所付出的辛勤工作,尤其是 Timmy Willison (Github 上的 timmywil)、Corey Frang (gnarf)、Rick Waldron (rwldrn) 和 Julian Aubourg (jaubourg)。Karl Swedberg (kswedberg) 和 Addy Osmani (addyosmani) 努力在 API 网站上完善了新文档。此外,感谢 Mike Sherov (mikesherov),这位新人贡献者已经为几个棘手的错误创建了补丁。非常感谢所有报告错误、提交拉取请求、审查提交以及以其他方式确保我们尽力做到最好的其他人。

尽管如此,我们仍然需要更多帮助,而这正是您可以贡献的地方。您可以做到的最简单也是最重要的的事情就是偶尔将我们正在进行的工作与您的代码和您的预期进行比较。它始终位于 https://code.jqueryjs.cn/jquery-git.js,并且每次对我们的 github.com 上的 master 分支 进行新提交时都会生成一个新的副本。如果您在最终版本中发现错误,请针对 jquery-git.js 进行测试,以查看它是否已被修复。这非常简单,因为 jsFiddle.net 提供了一个选项,可以使用 jquery-git.js 文件作为 “jQuery (edge)” 测试您的代码。

如果您想做更多,我们很乐意让您参与进来!我们写了一份 文档,可以帮助您开始这个过程,并且我们中的一人或多人通常在 IRC 的 #jquery-dev 频道中提供帮助,如果您需要更多帮助或信息。

jQuery 1.7 更改日志

1.7 版本的当前更改日志。

Ajax

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

属性

  • #5479: removeAttr:删除多个属性
  • #6743: 根据浏览器将 enctype 映射到 encoding
  • #10176: 注入的脚本标签被评估了两次
  • #10278: checkboxEl.attr(‘checked’) 在 checkboxEl.click() 后返回陈旧的值
  • #10429: IE7 – 在调用 removeAttr(‘contenteditable’) 时出现无效的过程调用或参数;
  • #10514: removeAttr 不会在 IE6/7 中删除类属性

核心

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

Css

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

数据

  • #7323: 允许使用 $.fn.removeData 同时删除多个数据键
  • #8909: $(element).data() 会扫描所有属性,超出了实际需要。
  • #8921: jQuery 私有数据应该保持私有

Deferred

  • #8856: 请求:deferred.isUnresolved()
  • #9033: IE8 中的 try{ } finally{ } 错误
  • #9398: 针对改进 Deferred 的提案

尺寸

  • #9434: .outerWidth()/.outerHeight()/.innerWidth()/.innerHeight() 应该对窗口和文档起作用

效果

  • #5684: 效果:动画回调中的异常会导致无限循环
  • #6150: .stop 有时不会清除 .delay
  • #6641: 在动画完成回调中调用 stop() 会导致其他动画冻结
  • #8685: 动画应该跟踪动画状态,以便正确处理叠加动画
  • #9280: 允许为 animate() 使用多个效果队列
  • #9548: animate 无法对 svg 元素使用 fill-opacity css 属性
  • #10445: 将 queue 设置为 true 会导致错误
  • #10497: .stop 应该允许选择要停止的队列
  • #10622: .show() 无法正确恢复 CSS 设置的 “display” 值

事件

  • #3368: event.metaKey 仅在非 Mac 系统上应赋值给 event.ctrlKey
  • #6170: jQuery(window).scroll(); 导致 IE* 滚动到 0,0 位置
  • #6319: 回归:在 IE 中,change 处理程序内的 stopPropagation 错误地应用于 keydown 事件
  • #6386: 通过 “event.special.live.add” 为 live 事件提供 data 参数支持
  • #6593: IE8:当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667: 在某些情况下,submit 事件在 IE* 中不会委托
  • #6903: 特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定
  • #6942: JQuery.event.fix 在 IE 处理键事件时会导致不必要的回流
  • #7139: “hover” 事件别名应该适用于 .bind 和 .live
  • #7161: 提交表单元素的 Submit 事件在 IE 中未正确解除绑定
  • #7444: 在 ie8 或 ie7 上,使用“Enter”而不是按钮点击提交表单会触发 live submit 事件两次。
  • #8157: 在 IE 中,聚焦已经聚焦的文本字段将阻止 change 事件触发
  • #8728: 当离开时移除正在离开的元素时,事件 'mouseenter' 不会触发
  • #8789: 元数据:事件属性钩子
  • #8858: 特殊事件 - _default 方法无法访问 trigger 方法的 `data` 参数
  • #8866: IE8 input[type=file] 委托的 change 事件仅在失焦时触发文件
  • #8982: bind(“unload someOther”) => 在卸载时,处理程序仅执行一次。
  • #9069: 当悬停在元素的子元素上时,使用 live 或 delegate 会触发 mouseleave
  • #9279: delegate() bind 无法为选定元素正确处理 mouseover/mouseout 和 mouseenter/mouseout
  • #9393: 统一和 DRY 事件系统
  • #9593: 委托的 submit 事件在 IE 中不是 jQuery.Event 的实例
  • #9724: 当 window.parentNode 是 DOM 元素时,trigger 函数出现无限循环
  • #9901: 使用 .delegate 时,event.handleObj.namespace 不正确
  • #9933: jQuery.fn.toggle() 应该将状态存储在私有数据对象中
  • #9951: 当 DOM 在处理程序中被修改时,.trigger() 中的顺序错误
  • #10375: 不要将 `type` 包含在 jQuery.event.props 中
  • #10438: 重命名 jQuery.event.propHooks => .fixHooks
  • #10468: 移除已弃用的 jQuery.event.guid 和 jQuery.event.proxy
  • #10489: 断开的元素在 .trigger() 上冒泡到窗口
  • #10531: 考虑从 $.event.props 中移除 layerX 和 layerY
  • #10563: jQuery.Event 不再包含在事件委托中匹配选择器的元素。
  • #10567: 委托事件错误地匹配类名
  • #10575: 1.6.4 和 1.7rc1 之间的 live 事件传播发生重大变更
  • #10576: jQuery1.7rc1 和 jQueryMobile1.0rc2 - IE 在 jqm triggerCustomEvent 方法中出现错误

操作

  • #6782: 谨慎地允许更多字符串使用 innerHTML
  • #7037: 复制的元素中添加了重复的 mouseover 和 mouseout 事件。
  • #10501: HTML5 元素“innerShiv”在 html()/append() 中不一致

杂项

  • #10420: MouseWheel
  • #10553: 进一步减少最小许可证标题

选择器

  • #3144: .text() 方法的跨浏览器结果不一致
  • #5637: 布尔(和空)属性选择器失败
  • #6863: 更快的 getText
  • #7128: 由于使用 DOM 属性,属性选择器在 qSA 和 Sizzle 之间不一致
  • #8539: 没有 querySelectorAll 的浏览器中的 Sizzle 缓存冲突
  • #9261: Has Attribute 在 filter/children/siblings 中不起作用
  • #9570: 选择器 $(‘form[name=”..”]’) 在某些情况下在 IE8 中返回零个元素
  • #10178: $(window).is(“a”) >> 未捕获的 TypeError:无法调用未定义的 toLowerCase 方法
  • #10315: Sizzle 在使用位置选择器时忽略 seed 参数
  • #10562: 当使用调用 Sizzle 的伪选择器时,siblings 方法返回意外的元素

支持

  • #5145: Chrome 浏览器中的 jQuery.support.opacity = false
  • #6809:

jQuery 大会 2012:英国宣布

发布日期: 作者:

jQuery Conference 2012: UK

我们很高兴宣布 jQuery 大会 2012:英国,这是英国的第一届 jQuery 大会,将于 2012 年 2 月 10 日举行。大会将在牛津赛义德商学院举行,阵容包括 6 名 jQuery 团队成员和 4 位行业专家

jQuery Conference 2012: UK Speakers

门票

您可以在 活动网站 上了解有关阵容、演讲和地点的更多信息,门票现已开售,可在 EventBrite 上购买。

组织者

活动由总部位于牛津的数字代理机构 White October 组织,并获得 jQuery 项目的许可,以及 jQuery 团队成员的帮助和支持。去年,jQuery 活动团队试图在美国以外组织一项活动,我们发现从那么远的地方获得场地的难度之大。jQuery 团队很高兴与 White October 合作举办此次大会,我们希望您能加入我们,一起见证我们首次亮相欧洲!

赞助

如果贵公司有兴趣赞助此次活动,请查看 赞助包,请随时 发送电子邮件 或致电 (+44(0)207 976 4894) 联系 White October 的 John,以讨论不同的选择。

jQuery 1.7 RC2 发布

发布日期: 作者:

今天,在万圣节之后,jQuery 团队从我们的 Github 仓库中发布了 jQuery 1.7 RC2。除非有关于真正可怕问题或一群手持火把的镇民出现在我们家门前的报道,否则这段代码将与最终成为 1.7 版本的代码完全相同。如果有人知道任何原因导致这段代码不应该成为最终版本,请让我们知道您的意见!

这里躺着
RC2 的位;
请告诉我们
它是否适合你
为你

在 RC2 中,我们修复了一个棘手的问题,该问题有时会导致 Internet Explorer 8 在加载 jQuery 时变成僵尸。巧合的是,崩溃与创建我们用来执行功能检测的独立 <body> 元素有关。IE8 看到一个分离的身体,似乎会惊恐地崩溃。如果您仍然看到 IE8 崩溃的任何问题,请告诉我们。

感谢 @warrenparsons 的错误报告,我们还修复了与 .show() 方法相关的 可怕的回归。我们非常感谢那些测试这些预发布版本的人的努力。当然,想一下,“我会在它最终发布时尝试它”,这要容易得多,但是,如果您确实发现任何问题,那么这些问题会阻止您(以及可能数百或数千人)升级。至少对我们来说,这真是非常可怕。

在接下来的几天里,我们将在 api.jquery.com 上为 1.7 的许多新增功能和改进功能制作文档。请在接下来的几天里耐心等待,我们将清理页面,确保页面已填写并正确链接。有关更改的简要概述,请参阅 1.7 类别

jQuery 1.7 RC 2 更改日志

1.7 RC2 版本的当前更改日志。

Ajax

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

属性

  • #5479: removeAttr:删除多个属性
  • #6743: 根据浏览器将 enctype 映射到 encoding
  • #10176: 注入的脚本标签被评估了两次
  • #10278: checkboxEl.attr(‘checked’) 在 checkboxEl.click() 后返回陈旧的值
  • #10429: IE7 – 在调用 removeAttr(‘contenteditable’) 时出现无效的过程调用或参数;
  • #10514: removeAttr 不会在 IE6/7 中删除类属性

核心

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

Css

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

数据

  • #7323: 允许使用 $.fn.removeData 同时删除多个数据键
  • #8909: $(element).data() 会扫描所有属性,超出了实际需要。
  • #8921: jQuery 私有数据应该保持私有

Deferred

  • #8856: 请求:deferred.isUnresolved()
  • #9033: IE8 中的 try{ } finally{ } 错误
  • #9398: 针对改进 Deferred 的提案

尺寸

  • #9434: .outerWidth()/.outerHeight()/.innerWidth()/.innerHeight() 应该对窗口和文档起作用

效果

  • #5684: 效果:动画回调中的异常会导致无限循环
  • #6150: .stop 有时不会清除 .delay
  • #6641: 在动画完成回调中调用 stop() 会导致其他动画冻结
  • #8685: 动画应该跟踪动画状态,以便正确处理叠加动画
  • #9280: 允许为 animate() 使用多个效果队列
  • #9548: animate 无法对 svg 元素使用 fill-opacity css 属性
  • #10445: 将 queue 设置为 true 会导致错误
  • #10497: .stop 应该允许选择要停止的队列
  • #10622: .show() 无法正确恢复 CSS 设置的 “display” 值

事件

  • #3368: event.metaKey 仅在非 Mac 系统上应赋值给 event.ctrlKey
  • #6170: jQuery(window).scroll(); 导致 IE* 滚动到 0,0 位置
  • #6319: 回归:在 IE 中,change 处理程序内的 stopPropagation 错误地应用于 keydown 事件
  • #6386: 通过 “event.special.live.add” 为 live 事件提供 data 参数支持
  • #6593: IE8:当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667: 在某些情况下,submit 事件在 IE* 中不会委托
  • #6903: 特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定
  • #6942: JQuery.event.fix 在 IE 处理键事件时会导致不必要的回流
  • #7139: “hover” 事件别名应该适用于 .bind 和 .live
  • #7161: 提交表单元素的 Submit 事件在 IE 中未正确解除绑定
  • #7444: 在 ie8 或 ie7 上,使用“Enter”而不是按钮点击提交表单会触发 live submit 事件两次。
  • #8157: 在 IE 中,聚焦已经聚焦的文本字段将阻止 change 事件触发
  • #8728: 当离开时移除正在离开的元素时,事件 'mouseenter' 不会触发
  • #8789: 元数据:事件属性钩子
  • #8858: 特殊事件 - _default 方法无法访问 trigger 方法的 `data` 参数
  • #8866: IE8 input[type=file] 委托的 change 事件仅在失焦时触发文件
  • #8982: bind(“unload someOther”) => 在卸载时,处理程序仅执行一次。
  • #9069: 当悬停在元素的子元素上时,使用 live 或 delegate 会触发 mouseleave
  • #9279: delegate() bind 无法为选定元素正确处理 mouseover/mouseout 和 mouseenter/mouseout
  • #9393: 统一和 DRY 事件系统
  • #9593: 委托的 submit 事件在 IE 中不是 jQuery.Event 的实例
  • #9724: 当 window.parentNode 是 DOM 元素时,trigger 函数出现无限循环
  • #9901: 使用 .delegate 时,event.handleObj.namespace 不正确
  • #9933: jQuery.fn.toggle() 应该将状态存储在私有数据对象中
  • #9951: 当 DOM 在处理程序中被修改时,.trigger() 中的顺序错误
  • #10375: 不要将 `type` 包含在 jQuery.event.props 中
  • #10438: 重命名 jQuery.event.propHooks => .fixHooks
  • #10468: 移除已弃用的 jQuery.event.guid 和 jQuery.event.proxy
  • #10489: 断开的元素在 .trigger() 上冒泡到窗口
  • #10531: 考虑从 $.event.props 中移除 layerX 和 layerY
  • #10563: jQuery.Event 不再包含在事件委托中匹配选择器的元素。
  • #10567: 委托事件错误地匹配类名
  • #10575: 1.6.4 和 1.7rc1 之间的 live 事件传播发生重大变更
  • #10576: jQuery1.7rc1 和 jQueryMobile1.0rc2 - IE 在 jqm triggerCustomEvent 方法中出现错误

操作

  • #6782: 谨慎地允许更多字符串使用 innerHTML
  • #7037: 复制的元素中添加了重复的 mouseover 和 mouseout 事件。
  • #10501: HTML5 元素“innerShiv”在 html()/append() 中不一致

杂项

  • #10420: MouseWheel
  • #10553: 进一步减少最小许可证标题

选择器

  • #3144: .text() 方法的跨浏览器结果不一致
  • #5637: 布尔(和空)属性选择器失败
  • #6863: 更快的 getText
  • #7128: 由于使用 DOM 属性,属性选择器在 qSA 和 Sizzle 之间不一致
  • #8539: 没有 querySelectorAll 的浏览器中的 Sizzle 缓存冲突
  • #9261: Has Attribute 在 filter/children/siblings 中不起作用
  • #9570: 选择器 $(‘form[name=”..”]’) 在某些情况下在 IE8 中返回零个元素
  • #10178: $(window).is(“a”) >> 未捕获的 TypeError:无法调用未定义的 toLowerCase 方法
  • #10315: Sizzle 在使用位置选择器时忽略 seed 参数
  • #10562: 当使用调用 Sizzle 的伪选择器时,siblings 方法返回意外的元素

支持

  • #5145: Chrome 浏览器中的 jQuery.support.opacity = false
  • #6809: 添加 jQuery.support.fixedPosition
  • #10558: 测试支持错误
  • #10613: IE8 不喜欢在头部中分离身体

遍历

  • #10449: 函数 $(“#id”).closest(“.class”) 如果它有 .class,则返回元素 $(“#id”) 本身

jQuery 1.7 RC1 发布

发布日期: 作者:

该团队越来越接近 jQuery 1.7,今天我们发布了一个候选版本。完整的修复和功能列表可以在下面找到。我们敦促每个人开始在其应用程序中测试这段代码,以便我们能够确保在最终发布之前没有重大问题。

测试再简单不过了,您可以从 jQuery CDN 获取代码

请帮助我们,将这段代码放入您的现有应用程序中。如果您看到什么,请说出来。提交错误报告 并提及您正在针对 jQuery 1.7 RC1 进行测试。如果存在问题,我们希望解决它。

与此同时,我们正在制作文档和发行说明,以确保您顺利过渡到 1.7。敬请关注!

jQuery 1.7 RC 1 更改日志

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

Ajax

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

属性

  • #5479: removeAttr:删除多个属性
  • #6743: 根据浏览器将 enctype 映射到 encoding
  • #10176: 注入的脚本标签被评估了两次
  • #10278: checkboxEl.attr(‘checked’) 在 checkboxEl.click() 后返回陈旧的值
  • #10429: IE7 – 在调用 removeAttr(‘contenteditable’) 时出现无效的过程调用或参数;
  • #10514: removeAttr 不会在 IE6/7 中删除类属性

核心

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

Css

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

数据

  • #7323: 允许使用 $.fn.removeData 同时删除多个数据键
  • #8909: $(element).data() 会扫描所有属性,超出了实际需要。
  • #8921: jQuery 私有数据应该保持私有

Deferred

  • #8856: 请求:deferred.isUnresolved()
  • #9033: IE8 中的 try{ } finally{ } 错误
  • #9398: 针对改进 Deferred 的提案

尺寸

  • #9434: .outerWidth()/.outerHeight()/.innerWidth()/.innerHeight() 应该对窗口和文档起作用

效果

  • #5684: 效果:动画回调中的异常会导致无限循环
  • #6150: .stop 有时不会清除 .delay
  • #6641: 在动画完成回调中调用 stop() 会导致其他动画冻结
  • #8685: 动画应该跟踪动画状态,以便正确处理叠加动画
  • #9280: 允许为 animate() 使用多个效果队列
  • #9548: animate 无法对 svg 元素使用 fill-opacity css 属性
  • #10416: defaultDisplay 在 FF 中为 tr 返回 block 而不是 table-row
  • #10445: 将 queue 设置为 true 会导致错误
  • #10497: .stop 应该允许选择要停止的队列

事件

  • #3368: event.metaKey 仅在非 Mac 系统上应赋值给 event.ctrlKey
  • #6170: jQuery(window).scroll(); 导致 IE* 滚动到 0,0 位置
  • #6319: 回归:在 IE 中,change 处理程序内的 stopPropagation 错误地应用于 keydown 事件
  • #6386: 通过 “event.special.live.add” 为 live 事件提供 data 参数支持
  • #6593: IE8:当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667: 在某些情况下,submit 事件在 IE* 中不会委托
  • #6903: 特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定
  • #6942: JQuery.event.fix 在 IE 处理键事件时会导致不必要的回流
  • #7139: “hover” 事件别名应该适用于 .bind 和 .live
  • #7161: 提交表单元素的 Submit 事件在 IE 中未正确解除绑定
  • #7444: 在 ie8 或 ie7 上,使用“Enter”而不是按钮点击提交表单会触发 live submit 事件两次。
  • #8157: 在 IE 中,聚焦已经聚焦的文本字段将阻止 change 事件触发
  • #8728: 当离开时移除正在离开的元素时,事件 'mouseenter' 不会触发
  • #8789: 元数据:事件属性钩子
  • #8858: 特殊事件 - _default 方法无法访问 trigger 方法的 `data` 参数
  • #8866: IE8 input[type=file] 委托的 change 事件仅在失焦时触发文件
  • #8982: bind(“unload someOther”) => 在卸载时,处理程序仅执行一次。
  • #9069: 当悬停在元素的子元素上时,使用 live 或 delegate 会触发 mouseleave
  • #9279: delegate() bind 无法为选定元素正确处理 mouseover/mouseout 和 mouseenter/mouseout
  • #9393: 统一和 DRY 事件系统
  • #9593: 委托的 submit 事件在 IE 中不是 jQuery.Event 的实例
  • #9724: 当 window.parentNode 是 DOM 元素时,trigger 函数出现无限循环
  • #9901: 使用 .delegate 时,event.handleObj.namespace 不正确
  • #9933: jQuery.fn.toggle() 应该将状态存储在私有数据对象中
  • #9951: 当 DOM 在处理程序中被修改时,.trigger() 中的顺序错误
  • #10375: 不要将 `type` 包含在 jQuery.event.props 中
  • #10438: 重命名 jQuery.event.propHooks => .fixHooks
  • #10468: 移除已弃用的 jQuery.event.guid 和 jQuery.event.proxy
  • #10489: 断开的元素在 .trigger() 上冒泡到窗口
  • #10531: 考虑从 $.event.props 中移除 layerX 和 layerY
  • #10563: jQuery.Event 不再包含在事件委托中匹配选择器的元素。

操作

  • #6782: 谨慎地允许更多字符串使用 innerHTML
  • #7037: 复制的元素中添加了重复的 mouseover 和 mouseout 事件。
  • #10501: HTML5 元素“innerShiv”在 html()/append() 中不一致

杂项

  • #10553: 进一步减少最小许可证标题

选择器

  • #3144: .text() 方法的跨浏览器结果不一致
  • #5637: 布尔(和空)属性选择器失败
  • #6863: 更快的 getText
  • #7128: 由于使用 DOM 属性,属性选择器在 qSA 和 Sizzle 之间不一致
  • #8539: 没有 querySelectorAll 的浏览器中的 Sizzle 缓存冲突
  • #9261: Has Attribute 在 filter/children/siblings 中不起作用
  • #9570: 选择器 $(‘form[name=”..”]’) 在某些情况下在 IE8 中返回零个元素
  • #10178: $(window).is(“a”) >> 未捕获的 TypeError:无法调用未定义的 toLowerCase 方法
  • #10315: Sizzle 在使用位置选择器时忽略 seed 参数
  • #10562: 当使用调用 Sizzle 的伪选择器时,siblings 方法返回意外的元素

支持

  • #5145: Chrome 浏览器中的 jQuery.support.opacity = false
  • #6809: 添加 jQuery.support.fixedPosition
  • #10558: 测试支持错误

遍历

  • #10449: 函数 $(“#id”).closest(“.class”) 如果它有 .class,则返回元素 $(“#id”) 本身

宣布 jQuery 标准团队

发布日期: 作者:

今天,我们很高兴宣布成立一个名为 jQuery 标准团队的新 jQuery 子团队,为 Web 开发人员提供参与标准流程的平台。

介绍

我们都知道 Web 标准很重要。它们有助于确保我们编写的代码跨越不同的技术、为不同能力的人使用,最重要的是跨越所有浏览器。

话虽如此,我们所有人多久会感觉到我们的声音、建议和想法被那些负责定义这些标准的群体听到?现实情况是,尽管我们许多人希望看到改变,但由于时间限制和冗长的正式流程,我们无法参与标准讨论,参与编写规范,并参与有关未来功能的会议。这使得 Web 开发人员难以发声。



Yehuda Katz 是团队负责人。Paul Irish 加入了他。

另一个问题是,对于那些参与该流程的人来说,参与标准邮件列表中的某个特定主题往往感觉影响有限,因为 Web 社区非常分散。浏览器供应商在这些列表中非常活跃,几乎所有主题都假设了大量的机构知识。这些列表中的实施者有他们自己的场所来讨论共同关注的领域,但除了在会议上偶然的聚会外,希望参与的 Web 开发人员却没有。

jQuery 项目希望帮助改变这种状况 - 我们希望您在塑造 Web 未来方面拥有发言权。

jQuery 标准团队

jQuery 标准团队有三个主要目标

  • 代表 Web 开发人员社区,特别是 jQuery 用户,向 W3C 和 TC39 等标准机构,旨在改进现有标准和正在进行的标准,以更好地满足 Web 开发人员的需求。
  • 代表 Web 开发人员社区,尤其是 jQuery 用户,向浏览器供应商,旨在帮助他们确定应优先实施的标准,以及他们可以构建的概念验证。
  • 帮助 jQuery 项目根据需要采用新的标准和浏览器功能。

这标志着 Web 开发人员社区提交反馈和影响标准机构和规范的方式发生了重大变化。通过降低参与标准机构和浏览器供应商的建议和问题被听到的门槛,我们希望鼓励更多对处理标准机构和浏览器供应商感兴趣的开发人员有机会参与该过程。

jQuery 标准团队由 jQuery 团队成员 Yehuda Katz 和 Paul Irish 领导,你们中的一些人可能认识他们。多年来,Yeuhda 和 Paul 在许多方面与标准机构和浏览器供应商合作,他们在 SproutCore 和 Chrome 开发者关系方面的个人工作为他们提供了额外的视角,这将在为社区代言时很有用。

您可能想知道为什么我们认为这个团队应该代表更广泛的 Web 开发人员社区。由于 jQuery 被 Web 上如此大比例的网站使用(超过 50% 的前 10,000 个网站),我们对常见的问题和挑战以及现有实现中我们需要尝试解决的问题有很好的了解。由于 jQuery 也如此专注于 DOM 操作,因此该库为已知的实现问题及其(当前)最佳解决方案提供了良好的信息来源。

虽然目前的团队主要由 jQuery 团队成员组成,但我们希望尽可能多地让对标准和规范充满热情的开发人员参与到团队中来。归根结底,该团队的目标是帮助识别对该过程感兴趣的 Web 开发人员,并为我们所有人提供一个论坛,用于讨论该过程、想法和共同关注的领域。我们相信,通过共同努力,我们都可以帮助构建一个更好的 Web。

参与进来

如果您有兴趣参与 jQuery 标准团队,最简单的方法是注册 Google 小组。与其他 jQuery 子团队类似,将在 freenode 上的 #jquery-meeting(日期待定)定期举行公开会议,以讨论该团队如何才能尽可能有效地宣传 Web 开发人员社区的需求。

您可能已经看到了 Paul 的帖子 什么功能可以改善 Web? - 如果您的反馈在那里被捕获,您已经参与了。;)

您也可以在 官方团队 Github 代码库 上的问题跟踪器中报告(或评论)标准或规范问题。如果您发布新问题,请尝试识别规范或标准中存在的问题或正在提出的问题。这里有一个 此类问题的绝佳示例

我们希望收集 Web 生态系统中规范良好且表达清晰的问题,并与标准机构或供应商一起倡导改进。对于真正的 issue,我们将根据需要对其进行标记(例如,W3C、TC39、浏览器供应商等),并在适用时,向相应的标准组织或浏览器供应商提交工单,这样您就不必自己动手了。

结论

通过创建这个新的论坛,我们希望为数百万对参与该过程感兴趣的 Web 开发人员提供一个发声的机会,但他们却没有一个简单的途径。请告诉我们您对该团队的想法,因为我们希望尽可能地改进它。我们期待听到您对它以及标准流程的评论、建议和想法!

jQuery 1.7 Beta 2 发布

发布时间: 作者:

在今年早些时候波士顿举行的 jQuery 大会之后,根据社区宝贵的反馈,我们发布了一个新的测试版,该测试版包含了进一步的修复并提高了稳定性。完整的修复和功能列表可在下面找到。我们敦促大家在他们的应用程序中开始测试这段代码,这样我们就可以确保在最终发布之前没有任何重大问题。

您可以从 jQuery CDN 获取代码

请通过将该代码放入您的现有应用程序中来帮助我们。如果您看到什么,请告诉我们。提交 bug 并提及您正在针对 jQuery 1.7 Beta 2 进行测试。如果有问题,我们希望解决它!

jQuery 1.7 Beta 2 更改日志

1.7 Beta 2 版本的当前更改日志

Ajax

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

属性

  • #5479: removeAttr:删除多个属性
  • #10176: 注入的脚本标签被评估了两次
  • #10278: checkboxEl.attr(‘checked’) 在 checkboxEl.click() 后返回陈旧的值
  • #10429: IE7 – 在调用 removeAttr(‘contenteditable’) 时出现无效的过程调用或参数;

核心

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

Css

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

数据

  • #7323: 允许使用 $.fn.removeData 同时删除多个数据键
  • #8909: $(element).data() 会扫描所有属性,超出了实际需要。
  • #8921: jQuery 私有数据应该保持私有

Deferred

  • #8856: 请求:deferred.isUnresolved()
  • #9033: IE8 中的 try{ } finally{ } 错误
  • #9398: 针对改进 Deferred 的提案

尺寸

  • #9434: .outerWidth()/.outerHeight()/.innerWidth()/.innerHeight() 应该对窗口和文档起作用

效果

  • #5684: 效果:动画回调中的异常会导致无限循环
  • #6150: .stop 有时不会清除 .delay
  • #6641: 在动画完成回调中调用 stop() 会导致其他动画冻结
  • #8685: 动画应该跟踪动画状态,以便正确处理叠加动画
  • #9280: 允许为 animate() 使用多个效果队列
  • #9548: animate 无法对 svg 元素使用 fill-opacity css 属性
  • #10416: defaultDisplay 在 FF 中为 tr 返回 block 而不是 table-row
  • #10445: 将 queue 设置为 true 会导致错误

事件

  • #3368: event.metaKey 仅在非 Mac 系统上应赋值给 event.ctrlKey
  • #6170: jQuery(window).scroll(); 导致 IE* 滚动到 0,0 位置
  • #6319: 回归:在 IE 中,change 处理程序内的 stopPropagation 错误地应用于 keydown 事件
  • #6386: 通过 “event.special.live.add” 为 live 事件提供 data 参数支持
  • #6593: IE8:当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667: 在某些情况下,submit 事件在 IE* 中不会委托
  • #6903: 特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定
  • #6942: JQuery.event.fix 在 IE 处理键事件时会导致不必要的回流
  • #7139: “hover” 事件别名应该适用于 .bind 和 .live
  • #7161: 提交表单元素的 Submit 事件在 IE 中未正确解除绑定
  • #7444: 在 ie8 或 ie7 上,使用“Enter”而不是按钮点击提交表单会触发 live submit 事件两次。
  • #8157: 在 IE 中,聚焦已经聚焦的文本字段将阻止 change 事件触发
  • #8728: 当离开时移除正在离开的元素时,事件 'mouseenter' 不会触发
  • #8789: 元数据:事件属性钩子
  • #8858: 特殊事件 - _default 方法无法访问 trigger 方法的 `data` 参数
  • #8866: IE8 input[type=file] 委托的 change 事件仅在失焦时触发文件
  • #8982: bind(“unload someOther”) => 在卸载时,处理程序仅执行一次。
  • #9069: 当悬停在元素的子元素上时,使用 live 或 delegate 会触发 mouseleave
  • #9279: delegate() bind 无法为选定元素正确处理 mouseover/mouseout 和 mouseenter/mouseout
  • #9393: 统一和 DRY 事件系统
  • #9593: 委托的 submit 事件在 IE 中不是 jQuery.Event 的实例
  • #9724: 当 window.parentNode 是 DOM 元素时,trigger 函数出现无限循环
  • #9901: 使用 .delegate 时,event.handleObj.namespace 不正确
  • #9933: jQuery.fn.toggle() 应该将状态存储在私有数据对象中
  • #9951: 当 DOM 在处理程序中被修改时,.trigger() 中的顺序错误
  • #10375: 不要将 `type` 包含在 jQuery.event.props 中
  • #10438: 重命名 jQuery.event.propHooks => .fixHooks
  • #10468: 移除已弃用的 jQuery.event.guid 和 jQuery.event.proxy
  • #10489: 断开的元素在 .trigger() 上冒泡到窗口

操作

  • #6782: 谨慎地允许更多字符串使用 innerHTML
  • #7037: 复制的元素中添加了重复的 mouseover 和 mouseout 事件。

选择器

  • #3144: .text() 方法的跨浏览器结果不一致
  • #5637: 布尔(和空)属性选择器失败
  • #6863: 更快的 getText
  • #7128: 由于使用 DOM 属性,属性选择器在 qSA 和 Sizzle 之间不一致
  • #8539: 没有 querySelectorAll 的浏览器中的 Sizzle 缓存冲突
  • #9261: Has Attribute 在 filter/children/siblings 中不起作用
  • #9570: 选择器 $(‘form[name=”..”]’) 在某些情况下在 IE8 中返回零个元素
  • #10178: $(window).is(“a”) >> 未捕获的 TypeError:无法调用未定义的 toLowerCase 方法
  • #10315: Sizzle 在使用位置选择器时忽略 seed 参数

支持

  • #5145: Chrome 浏览器中的 jQuery.support.opacity = false
  • #6809: 添加 jQuery.support.fixedPosition

遍历

  • #10449: 函数 $(“#id”).closest(“.class”) 如果它有 .class,则返回元素 $(“#id”) 本身

jQuery 1.7 Beta 1 发布

发布时间: 作者:

如果您还没有听说,jQuery 大会 2011 本周晚些时候将在波士顿举行。我们已经准备了一些东西,我们称之为 jQuery 1.7 Beta 1,我们将在大会上对此进行更多讨论。它包含了一堆可爱的新功能和重要的 bug 修复 - 据统计,至少有 50 多个。

您可以从 jQuery CDN 获取测试版

请通过将此代码放入您的现有应用程序中并告知我们是否不再有任何工作来帮助我们。请提交 bug 工单,并确保提及您正在针对 jQuery 1.7 BETA 1 进行测试。

另外,请务必探索所有新功能,并查看您最喜欢的讨厌的 bug 是否已修复。如果您等到最终发布后再进行测试,那就太迟了!

与往常一样,我们希望鼓励社区中的每个人尝试并参与进来,为 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 版本可能会困扰我们一段时间,因此我们花了一些时间试图改善它们的性能。它们的事件传递性能得到了极大的改进,但最大的变化是我们使用了一种不同的方法来修复它们不冒泡和损坏的表单事件。因此,我们能够极大地简化和缩短特殊事件代码。这些事件应该可以正常工作 - 甚至比以前更好,因为我们关闭了大约六个相关的 bug - 但请注意任何异常行为。

动画改进

在 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: IE8 中的 try{ } finally{ } 错误
  • #9398: 针对改进 Deferred 的提案

效果

  • #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 事件提供 data 参数支持
  • #6593: IE8:当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667: 在某些情况下,submit 事件在 IE* 中不会委托
  • #6705: focus() 导致 focus 事件在 IE8 中被处理两次
  • #6903: 特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定
  • #6942: JQuery.event.fix 在 IE 处理键事件时会导致不必要的回流
  • #7139: “hover” 事件别名应该适用于 .bind 和 .live
  • #7161: 提交表单元素的 Submit 事件在 IE 中未正确解除绑定
  • #7444: 在 ie8 或 ie7 上,使用“Enter”而不是按钮点击提交表单会触发 live submit 事件两次。
  • #8157: 在 IE 中,聚焦已经聚焦的文本字段将阻止 change 事件触发
  • #8728: 当离开时移除正在离开的元素时,事件 'mouseenter' 不会触发
  • #8789: 元数据:事件属性钩子
  • #8858: 特殊事件 - _default 方法无法访问 trigger 方法的 `data` 参数
  • #8866: IE8 input[type=file] 委托的 change 事件仅在失焦时触发文件
  • #8982: bind(“unload someOther”) => 在卸载时,处理程序仅执行一次。
  • #9069: 当悬停在元素的子元素上时,使用 live 或 delegate 会触发 mouseleave
  • #9279: delegate() bind 无法为选定元素正确处理 mouseover/mouseout 和 mouseenter/mouseout
  • #9393: 统一和 DRY 事件系统
  • #9593: 委托的 submit 事件在 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: Has Attribute 在 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

希望在展会上见到大家!