jQuery 大会 2012:英国 - 培训研讨会宣布

发布日期 作者

我们很高兴地宣布今年在英国举行的两次培训研讨会。培训将由Doug NeinerRalph WhitbeckMike HostetlerappendTo 的成员)进行。大会的普通入场券现已售罄,但您仍可购买大会/培训组合并参加大会。

appendTo

AppendTo 将举办jQuery 入门jQuery Mobile 研讨会。研讨会将于 2012 年 2 月 9 日星期四在英国牛津的玛格丽特·霍尔举行。

jQuery 入门

jQuery 因其易于学习和编写而成为最受欢迎的 JavaScript 库。本课程将带领学员学习 jQuery 前端开发的基础知识。本课程旨在为开发人员奠定核心基础。掌握扎实的 jQuery 和 JavaScript 知识,开发人员将有信心为他们的 Web 应用程序增添丰富功能。

jQuery 主题涵盖*

  • 简介
  • 查找内容,执行操作
  • jQuery 函数
  • jQuery 对象
  • 事件/Ajax/更多…

* 主题可能会更改

jQuery 入门研讨会的价格为 320 英镑 + 增值税,其中包含大会入场券,仅培训的价格为 160 英镑 + 增值税。

jQuery Mobile

jQuery Mobile 作为移动 Web 开发的可能解决方案,已经获得了不可否认的关注。jQuery Mobile 采用渐进增强方法,旨在为所有人提供移动 Web 体验,同时为拥有支持丰富体验的移动设备的用户提供更丰富的体验。

本培训将涵盖对 jQuery Mobile 框架的全面回顾,介绍构建健壮且跨平台的移动网站的所有新功能和可用功能。整个 API 将得到介绍,并提供使用每个组件充分发挥其潜力的示例。

本培训以从头开始构建 jQuery Mobile 应用程序的步骤作为结束,从头到尾,直至使用 PhoneGap 编译应用程序的本机版本。

主题涵盖*

  • 移动 Web 的现状
  • jQuery Mobile 功能概述
  • 从头开始构建 jQuery Mobile 应用程序
  • 使用 jQuery Mobile + PhoneGap 实现原生应用

* 主题可能会更改

jQuery Mobile 研讨会的价格为 420 英镑 + 增值税,其中包含大会入场券,仅培训的价格为 270 英镑 + 增值税。

培训研讨会将于 2012 年 2 月 9 日在玛格丽特·霍尔举行,而不是在大会举办地赛义德商学院举行。

征集 jQuery 1.8 的想法

发布日期 作者

我们准备进行下一轮社区意见征集,这次针对 1.8 版本!这是您提出建议的机会,让我们可以修复、添加、更改或删除 jQuery 中的内容,使其变得更好。

您可以使用此表格添加建议;尽可能提供指向错误报告、包含详细说明的页面或代表您想法的实现的链接。我们希望在 12 月 5 日之前收到您的所有意见,以便我们在制定 1.8 路线图之前进行阅读和讨论。

感谢您在我们关于如何通过精简 jQuery 来改进 jQuery 的早期博客文章中留下的建议。我们已经仔细阅读了这些评论,并对如何在未来版本中解决其中一些问题有一些想法。

创建可配置的下载生成器

很多人想知道为什么我们没有办法构建一个只包含您需要的 jQuery 部分的文件,因为例如 jQuery UI 就有这样的选项。但这并非完全相同的情况。您知道是否正在使用例如 UI 手风琴,因为您直接调用它。您通常不知道您或您在页面上包含的某些插件是否正在使用 $.fn.prepend() 或 $.fn.animate()。您是否使用它们甚至可能取决于您在运行时传递给插件的参数。

为了使 jQuery 开发易于管理,并确保 CDN 可以提供一个单一文件,供互联网上的每个人有效地共享和缓存,团队希望继续使用单一文件作为其主要产品。创建可配置的下载可能会略微改善文件大小,但也会使文档、插件使用和调试变得复杂。这对您和我们来说都是很多额外工作。

我们已经开始努力提高模块化,方法是消除 jQuery 内部不需要的依赖关系;我们宣布的许多已弃用功能将用于删除这些依赖关系。通过奠定这样的基础,其他人想要创建他们自己的更小 subset 的 jQuery 或模块化版本应该更容易。

但是,我们相信我们可以做得更好,并希望提供自动化的方式,让任何用户都可以创建包含应用程序代码和所需 jQuery 部分的最佳最小化文件。特别是,我们正在与 Google Closure Compiler 团队合作,看看是否可以使用其ADVANCED_OPTIMIZATIONS 选项。我们将随着进展提供更多有关我们进展的信息。

等到 2.0 版本再删除内容

我们意识到需要打破现有的所有 jQuery 代码。这就是为什么我们尽早弃用某些内容,以便人们有充足的时间更改他们的代码。仅仅因为我们今天弃用了一些内容,并不一定意味着我们将在下一个版本中删除它。我们相信 1.8 中实际被删除的内容列表很小,不太可能影响大多数用户。

如果我们使用 Closure Compiler 的实验成功,我们甚至可能保留许多已弃用功能,但如果您不使用它们并构建包含 jQuery 的自定义应用程序文件,它们将被自动删除。这将是两全其美。

删除 IE 6、7 和/或 8 的支持

这个话题不断出现,所以让我们一劳永逸地解决它。人们往往高估了 jQuery 中专门与 IE 相关的代码量。IE 6 和 IE 7 中的大多数问题也存在于 IE 8 中,因此只要最后一个浏览器仍然拥有可观的桌面市场份额并且必须得到支持,那么放弃对前两个浏览器的支持就没有任何真正的尺寸或复杂性优势。没有人(包括微软本身)喜欢这些“侏罗纪公园”浏览器,但现在就剥夺对它们的支持将使许多用户的网站无法正常工作。

也就是说,我们知道某些情况下不需要旧 IE 支持,例如移动浏览器。我们正在研究将尽可能多的此类代码放入一个清晰标记的块中的方法,以便那些愿意创建自己的自定义 jQuery 版本的人可以轻松地将其删除。Closure Compiler 也可能有助于解决此问题。但是,我们不确定这是否能节省 gzip 文件大小的显著空间,而且它也不会提供性能提升,因为这些代码路径不会在其他浏览器中使用。

删除 jQuery.browser

我们已经记录了将近两年,我们打算将 jQuery.browser 转移到一个插件中,并且许多人在评论中也建议这样做。浏览器嗅探不是查找功能的可靠方法,我们建议使用诸如Modernizr 之类的东西。用于浏览器嗅探的正则表达式很大,压缩效果不佳;将其转移到插件中将确保只有使用它的人需要承受这种大小惩罚。

您的想法呢?

请利用这个机会提供您的意见。团队期待审查您的建议。哦,别忘了尽快尝试 jQuery 1.7.1!

jQuery 1.7.1 发布

发布日期 作者

在美国,我们本周正在庆祝感恩节。对于世界上其他地方的人来说,这是一个安装和测试新版本 Javascript 库,同时享用妈妈亲手制作的美食的时刻。有点像代码冲刺,但食物更好。我们邀请全球各地的人们加入我们的这些传统。

为了开启庆祝活动,jQuery 团队非常感谢能够发布 1.7.1 版本!在这轮中,我们在大量错误方面取得了“朝圣者”般的进展,这些错误列在下面。我们正在 jQuery CDN 上提供我们美味的副本,这些副本从烤箱里新鲜出炉,热气腾腾。

这些最新文件也应该很快出现在主要的 CDN 上,但请耐心等待,因为对于他们来说,这也是一个假期周。

请使用您的代码安装并测试这块最新的 jQuery。我们希望您会觉得它很美味。如果我们忘记“油炸”一些错误,我们希望听到您的意见。只需为发现的问题组装一个具体的测试用例(我们喜欢 jsFiddle.net),并在 bugs.jquery.com 上创建错误报告。

同时,欢迎新加入 jQuery Core 团队的 Mike Sherov!我们很高兴有他的帮助,因为我们为即将发布的版本计划了许多很棒的事情。Mike 在纽约市的 SNAP Interactive 全职工作,但在空闲时间为项目做贡献。请效仿 Mike,尽你所能帮助这个项目。这并不一定需要是编码。我们总需要在论坛上回答问题,或者仅仅是重现和识别错误追踪器中报告的模糊错误的来源。请查看我们的 参与 页面以获取更多信息。

我们将在一天或两天内开放 1.8 版本建议征集。查看 1.7.1 版本,想想我们可以为下一个大版本添加什么酷炫的功能!

jQuery 1.7.1 变更日志

1.7.1 版本的变更日志。

Ajax

  • #10723: jqXHR.always() 返回一个 Promise 对象而不是一个 jqXHR 对象

属性

  • #10724: $(document).text() 始终返回一个空字符串
  • #10773: removeAttr 对于边缘情况很脆弱

构建

  • #10630: 修复与焦点相关的测试失败以解决 Swarm 失败

核心

  • #10616: .eq 中的 -1 没有进行类型强制转换
  • #10646: 让 jQuery.error 抛出 instanceof Error 对象
  • #10682: 使用 $(‘ ‘) 创建 DOM 元素会造成内存泄漏并跳过片段缓存
  • #10687: jQuery 过早调用 AMD define() 全局函数
  • #10690: isNumeric

Css

  • #10733: 将 css 模块中对 jQuery.each 的使用替换为 for 循环

数据

  • #10675: 使用 internalKey 快捷方式而不是 jQuery.expando

效果

  • #10669: .animate() 不再动画化百分比 (%) 宽度
  • #10750: 数据对象中的“null”会导致 stop 中的错误

事件

  • #10676: wheelDelta 不再添加到 mousewheel 事件中
  • #10701: 使用 submit 函数提交表单时出现问题
  • #10704: special.handle 方法应该在 origType 名称下触发
  • #10705: off 错误事件名称解析器
  • #10712: 使用 live 绑定触发 blur 失败
  • #10717: 触发的 load 会冒泡到窗口
  • #10791: 委托事件在 SVG 元素上失败
  • #10794: .triggerHandler 不应该 .preventDefault()
  • #10798: live(“submit”) 和 .submit() 会导致非侵入式 ajax live 触发两次
  • #10844: 当表单包含名为“id”的输入时,.delegate() 在 submit 上不起作用

操作

  • #10177: .wrap 中回调函数的索引始终为 0
  • #10667: .wrapAll() 中的 HTML5 支持会向元素添加“:”
  • #10670: rnoshimcache 可能没有正确构造
  • #10812: 将空对象传递给 .before() 或 .after() 会在 IE7 中抛出异常

杂项

  • #10691: 从单元测试中删除所有“equals”和“same”函数的出现

支持

  • #10629: IE 对伪造的 body 太敏感了。探索清理 support.js 以避免任何未来的崩溃。
  • #10807: 注释中的非 ASCII 单引号

jQuery 委员会

发布于

TL;DR 负责监督 jQuery 财务和管理的机构,以前称为 jQuery 团队,现在被称为 jQuery 委员会。jQuery 团队是任何将大量时间投入到 jQuery 及其相关项目中的人。

随着 jQuery 从 2005 年的一个 酷炫的想法 发展到 如今互联网上使用最广泛的 JavaScript 代码,支持其开发和社区所需的组织结构也随之发展。随着时间的推移,电子邮件链变成了邮件列表,而这些列表又发展成一个非正式的联盟,被称为 jQuery 团队。要加入这个团队,你只需要持续为项目做出贡献,最终 John 会将你的名字添加到我们的文档维基上的页面中。

到 2009 年,团队希望巩固项目的长期未来,因此我们接受了 加入软件自由保护组织 (SFC) 的邀请,自此我们从他们那里获得了大量的行政和法律支持。尽管 SFC 提供了“项目可以继续以加入保护组织之前的方式运作,而无需选择董事会或任何其他层级的公司管理”,但团队选择实施一个治理系统,通过该系统,项目的正式决定将在 “核心团队”成员的公开投票 后传达给保护组织,该核心团队最初有 21 名成员。这为以前相对临时的流程赋予了相当大的正式性,虽然该系统运行良好,但也带来了一些混乱。

  • 一方面,有投票成员,他们主要负责整个项目的财务和管理决策。另一方面,有一个实际的团队负责处理 jQuery Core 本身。这两个团队有时都被称为 jQuery Core 团队,这相当具有误导性。
  • 当新人加入并成为项目某些部分的活跃贡献者时,告诉他们“嘿,干得不错,但你 *不在* 团队中!”一点也不好玩。
  • 仅仅因为你真的对破解 jQuery Core、UI 或 Mobile 感兴趣(或从事文档工作,或以任何其他方式帮助项目),并不意味着你有一丝想要参加长时间会议的愿望,讨论如何分配资金以及如何在下一个会议上改善饮料服务。
  • 随着人们生活的起伏变化,他们做出贡献的能力也会发生变化。当前积极的贡献者与在项目的宏观管理中拥有投票权之间有什么样的正确关联?

为了尝试解决这些混乱并使团队的目的更加清晰,jQuery 团队现在被称为 jQuery 委员会,适用于团队的所有治理规则现在都适用于委员会。委员会负责

  • 批准和分配支出
  • 代表 jQuery 项目的意愿向 SFC
  • 监督和指导子团队,并选择负责项目各个方面的子团队负责人
  • 对自身构成进行投票

如果你一直想“加入团队”,但不知道这意味着什么或你会做什么,这是一个好消息!我们完全接受了 维基百科对团队的定义:一群为了共同目标而联系在一起的人(或动物!)。因此,任何在一段时间内自愿积极加入 jQuery 子团队的人都会被邀请加入 jQuery 团队(由子团队负责人决定),这样你就可以在你的幻灯片、冰箱等地方自豪地展示它。

不会改变的是,如果你对网页开发充满热情,并试图找到一种方法为全世界的开发者做出贡献,那么 jQuery 社区就有你的容身之处。加入 论坛 并帮助其他开发者。前往我们的 各种 错误 追踪器 并帮助分类开放问题 - 或者 深入研究并看看你是否可以提供补丁。如果你只想了解情况,加入 每周的 IRC 会议。想参与某个特定项目?查看 更新后的团队页面 并联系合适的子团队负责人!有一点是肯定的

jQuery wants you!

jQuery 1.7.1 RC1 发布

发布于

为了让你知道我们并没有在 jQuery Central 沉睡,我们发布了一个新的 jQuery 预览版本。它修复了社区自最初的 1.7 版本发布以来报告的问题。请在你的应用程序中测试代码,确保没有重大问题。如果你尝试过 jQuery 1.7 并报告了错误,该错误应该在这个版本中修复。

你可以从 jQuery CDN 获取代码

你可以通过将该代码放入你的现有应用程序中并告知我们任何不再起作用的部分来帮助我们。请 提交错误报告 并确保提到你正在针对 jQuery 1.7.1 RC1 进行测试。

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

jQuery 1.7.1 RC1 变更日志

1.7.1 RC1 版本的当前变更日志。

Ajax

  • #10723: jqXHR.always() 返回一个 Promise 对象而不是一个 jqXHR 对象

属性

  • #10724: $(document).text() 始终返回一个空字符串
  • #10773: removeAttr 对于边缘情况很脆弱

构建

  • #10630: 修复与焦点相关的测试失败以解决 Swarm 失败

核心

  • #10616: .eq 中的 -1 没有进行类型强制转换
  • #10646: 让 jQuery.error 抛出 instanceof Error 对象
  • #10682: 使用 $(‘ ‘) 创建 DOM 元素会造成内存泄漏并跳过片段缓存
  • #10687: jQuery 过早调用 AMD define() 全局函数
  • #10690: isNumeric

Css

  • #10733: 将 css 模块中对 jQuery.each 的使用替换为 for 循环

数据

  • #10675: 使用 internalKey 快捷方式而不是 jQuery.expando

效果

  • #10669: .animate() 不再动画化百分比 (%) 宽度
  • #10750: 数据对象中的“null”会导致 stop 中的错误

事件

  • #10676: wheelDelta 不再添加到 mousewheel 事件中
  • #10701: 使用 submit 函数提交表单时出现问题
  • #10704: special.handle 方法应该在 origType 名称下触发
  • #10705: off 错误事件名称解析器
  • #10712: 使用 live 绑定触发 blur 失败
  • #10717: 触发的 load 会冒泡到窗口
  • #10791: 委托事件在 SVG 元素上失败
  • #10794: .triggerHandler 不应该 .preventDefault()
  • #10798: live(“submit”) 和 .submit() 会导致非侵入式 ajax live 触发两次

操作

  • #10177: .wrap 中回调函数的索引始终为 0
  • #10667: .wrapAll() 中的 HTML5 支持会向元素添加“:”
  • #10670: rnoshimcache 可能没有正确构造
  • #10812: 将空对象传递给 .before() 或 .after() 会在 IE7 中抛出异常

杂项

  • #10691: 从单元测试中删除所有“equals”和“same”函数的出现

支持

  • #10629: IE 对伪造的 body 太敏感了。探索清理 support.js 以避免任何未来的崩溃

即将到来的 jQuery 活动

发布于

jQuery 峰会 2011

一年一度的(在线)jQuery峰会又到了(不是圣诞节!几乎比圣诞节更棒!)。今年,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以及使用大型JavaScript应用程序,演讲者包括jQuery团队成员Karl Swedberg和Scott Gonzalez。

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

构建更精简的 jQuery

发布日期 作者

jQuery 已经超过五岁了!在这段时间里,它随着浏览器、网站、设备、开发者和用户的演变而不断发展。它也,嗯,在这段时间里增长了不少。jQuery 添加了许多有用的功能,但也积累了一些我们希望永远不会支持的废弃代码。在具有高速连接的台式电脑上,这可能不是问题,但我们希望 jQuery 也能成为移动设备的良好解决方案。

除了我们不断追求更高性能之外,我们对未来版本的优先事项是减小 gzip 后的文件大小。当每个新功能或错误修复也必须保留所有现有的功能和行为时,要做到这一点很难。因此,今天,我们想就通过弃用一些功能来精简 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():现在 Deferreds 和 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._data(element, "events") 访问 jQuery 的事件数据,但请注意,这是一个内部数据结构,未记录,不应修改。

$.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 上发布,只需一两天时间。

感谢您在测试和报告 beta 期间的错误,我们相信我们发布了一个稳定、可靠的版本。如果您发现问题,请提交错误,并确保在版本选择中选择 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,你就不必担心特殊情况。

所有现有的事件绑定方法(及其相应的解绑方法)在 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 的形式出现的,其中使用了标签、id 或类的其中一个或多个。通过在附加事件时在 JavaScript 中解析这些简单选择器,我们能够在事件传递期间胜过浏览器对 matchesSelector 的原生代码实现。对于更复杂的选择器,我们仍然使用 Sizzle 引擎,因此所有现有代码都应该继续工作。

最终的结果是委托事件的传递时间大约是 1.6.4 中的一半。

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

任何尝试使用 <section> 等新的 HTML5 标记的人无疑都遇到过这样的问题: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 中删除 class 属性

核心

  • #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: 改进的 Deferreds 建议

尺寸

  • #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 事件的数据参数
  • #6593: IE8: 当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667: 在某些条件下,IE* 中的表单元素上的 submit 事件不会委托
  • #6903: 特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定
  • #6942: JQuery.event.fix 在 IE 中处理键盘事件时会导致不必要的回流
  • #7139: “hover” 事件别名应该适用于 .bind 和 .live
  • #7161: 在 IE 中,表单元素上的 Submit 事件没有正确解绑
  • #7444: 使用“Enter”而不是按钮点击在 ie8 或 ie7 上提交表单会触发 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: 在 .trigger() 中,当 DOM 在处理程序中修改时,顺序错误。
  • #10375: 不要在 jQuery.event.props 中包含 `type`。
  • #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: 属性存在于 filter/children/siblings 中不起作用
  • #9570: 在某些情况下,选择器 $(‘form[name=”..”]’) 在 IE8 中返回零个元素
  • #10178: $(window).is(“a”) >> 未捕获的 TypeError:无法调用未定义的“toLowerCase”方法
  • #10315: Sizzle 在使用位置选择器时忽略种子参数
  • #10562: siblings 方法在使用 Sizzle 调用伪选择器时返回意外元素

支持

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

jQuery 大会 2012:英国宣布

发布于 作者

jQuery Conference 2012: UK

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

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 似乎对看到独立的 body 感到害怕而崩溃。如果您仍然看到 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 中删除 class 属性

核心

  • #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: 改进的 Deferreds 建议

尺寸

  • #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 事件的数据参数
  • #6593: IE8: 当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667: 在某些条件下,IE* 中的表单元素上的 submit 事件不会委托
  • #6903: 特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定
  • #6942: JQuery.event.fix 在 IE 中处理键盘事件时会导致不必要的回流
  • #7139: “hover” 事件别名应该适用于 .bind 和 .live
  • #7161: 在 IE 中,表单元素上的 Submit 事件没有正确解绑
  • #7444: 使用“Enter”而不是按钮点击在 ie8 或 ie7 上提交表单会触发 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: 在 .trigger() 中,当 DOM 在处理程序中修改时,顺序错误。
  • #10375: 不要在 jQuery.event.props 中包含 `type`。
  • #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: 属性存在于 filter/children/siblings 中不起作用
  • #9570: 在某些情况下,选择器 $(‘form[name=”..”]’) 在 IE8 中返回零个元素
  • #10178: $(window).is(“a”) >> 未捕获的 TypeError:无法调用未定义的“toLowerCase”方法
  • #10315: Sizzle 在使用位置选择器时忽略种子参数
  • #10562: siblings 方法在使用 Sizzle 调用伪选择器时返回意外元素

支持

  • #5145: 在 Chrome 浏览器中,jQuery.support.opacity = false
  • #6809: 添加 jQuery.support.fixedPosition
  • #10558: 测试支持错误
  • #10613: IE8 不喜欢其头部中的独立 body

遍历

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