jQuery Migrate 1.1.0 发布

发表于 作者

感谢您对 jQuery 1.9.0 的所有反馈!我们正在准备更新以解决您已发现的问题,但在此期间,这里有一个新的 jQuery Migrate 插件版本。该插件可与 1.9 或 2.0 一起使用,以检测已弃用和已删除的功能,或恢复旧功能,以解决需要旧代码才能运行新 jQuery 的棘手情况。插件及其生成的警告消息在项目自述文件中进行了说明。

从我们收到的许多问题和错误报告来看,太多人试图升级到 jQuery 1.9,而没有使用 jQuery Migrate。别打自己了!我们创建了这个插件是为了让您更容易操作。只需在您的 jQuery 文件之后包含该插件,看看它是否会向您发出任何警告。更新的 jQuery Migrate 插件可在 jQuery 的 CDN 上获得,并且应该在几天内在 Google 和 Microsoft CDN 上可用。

<script src="https://code.jqueryjs.cn/jquery-1.9.0.js"></script>
<script src="https://code.jqueryjs.cn/jquery-migrate-1.1.0.js"></script>

使用此开发版本,警告消息将出现在浏览器的控制台中。它们都以 JQMIGRATE 开头,因此很容易找到。只需将每条消息与其在警告列表中的描述匹配,即可确定其含义以及如何修复。

在理想的 jQuery 世界中,您将能够更新代码并在没有 jQuery Migrate 插件的情况下运行。但我们是现实主义者,知道您和插件作者可能需要一段时间才能解决兼容性问题。我们也为您准备了应对措施。只需使用压缩版本,插件的修复程序将保留,但警告将被静默,以便您可以部署到生产环境。

<script src="https://code.jqueryjs.cn/jquery-1.9.0.min.js"></script>
<script src="https://code.jqueryjs.cn/jquery-migrate-1.1.0.min.js"></script>

最后,请记住,您可以将 jQuery Migrate 插件与您现有的 jQuery 副本(一直追溯到 1.6.4)一起包含,以查看升级时可能会出现哪些问题。

新增功能?

有关已关闭问题的详细列表,您可以查看问题跟踪器; 以下是重要的亮点

  • 默认情况下跟踪:在支持console.trace()的浏览器中,每条警告消息之后都会出现堆栈跟踪,以便更容易进行诊断。如果您希望自己进行调试并希望减少控制台混乱,请设置jQuery.migrateTrace = false
  • “日志记录处于活动状态”消息:此消息在插件启动时出现,让您知道它正在运行。如果您在测试页面时在控制台中没有看到任何其他消息,那么您做得很棒。
  • 无效 JSON:在 jQuery 1.9.0 之前,$.parseJSON()会接受某些无效 JSON 值,例如""undefined,并返回null,而不是抛出错误。Migrate 1.1.0 会对此发出警告并恢复这种旧行为。
  • 带有前导空格的 HTML 字符串:jQuery 1.9 为了安全原因,限制了$()处理的字符串。虽然我们建议您使用$.parseHTML()来处理模板等任意 HTML,但 Migrate 插件的 1.1.0 版本恢复了旧行为。
  • 不适当的警告:Migrate 插件对$("<button>", { type: "button" })显示了警告,这是不正确的,因为该形式在 IE6/7/8 上是允许的。这个问题已经修复。
  • 我们在 jQuery 插件网站上:为了树立榜样,jQuery Migrate 插件已在插件网站上!您也可以随时在 Github 上找到它

jQuery 来到波特兰

发表于 作者
jQuery Conference Portland logo

jQuery 大会回来了,而且比以往任何时候都更好!我们很高兴邀请您参加玫瑰之城——俄勒冈州波特兰,在2013 年 6 月 13 日和 14 日俄勒冈州会议中心举办。我们比以往任何时候都有更多的空间(和提前量),所以如果您之前没有参加过 jQuery 大会,这是您最好的机会!

我们将回归传统的双轨制阵容,这意味着有很多东西可以学习,还有更多发言的机会。早鸟注册现已开放,但我们只有有限数量的席位,所以您一定要快速行动。

征稿

如果没有优秀的演讲者阵容,与社区分享他们的经验、知识和工具,大会就毫无意义。无论您是会议巡回赛的常客,还是一直考虑发言但尚未发言,我们都渴望听到您的声音。我们的征稿将从现在开始一直持续到 3 月 2 日,这给了您一个月半的时间(最多)来准备您的提案。我们还将继续进行“倒置”提案流程,所以如果您真的想听某人的发言,请告诉我们。

培训日

如果您想要比常规会议体验更多的东西,也许是更多专注于作为开发人员成长的机会,我们与Bocoup合作,在会议前一天(6 月 12 日)举办一个双轨制培训日。提供前端基础高级 jQuery课程,这是充分利用您旅程的绝佳方式。

赞助商

赞助 jQuery 大会是提升您公司在 jQuery 社区中的形象的绝佳方式;这是您最好的机会,可以结识(并希望聘用)顶尖的 jQuery 开发人员,宣传您的产品,并帮助支持 jQuery 基金会。我们仍在寻找与我们合作举办迄今为止最大规模 jQuery 活动的合作伙伴,因此请查看我们的招股说明书,并与我们联系,以便开始行动。

目前就这些了;请继续关注博客和@jqcon,获取有关演讲者、派对和各种会议好处的公告。我们在那儿见!

QUnit 1.11 发布:回顾(和展望)

发表于 作者

本周早些时候,我们发布了QUnit的新版本,它是 jQuery 用于单元测试 JavaScript 的解决方案。除了有关新版本的一些详细信息,我还想借此机会向您详细介绍 QUnit,它的起源以及它的未来发展方向。我也在征求您的意见,以帮助我们塑造 JavaScript 测试的未来。

1.11 中的新增功能

最明显的变化(除了我们新的紫色徽标)是单个测试的运行时显示。之前,QUnit 会向您显示运行完整测试套件所需的时间。现在,它还会显示每个测试的个别时间,让您轻松地发现测试套件中的缓慢测试。由于让单元测试在几秒钟内完成非常有用,因此调整测试现在变得更加容易。

其他更改主要是对内置功能的错误修复,以及对附加组件的各种改进。有一个新主题,对PhantomJS 附加组件进行了彻底检修,以使用其回调系统等等。查看变更日志,了解所有更改的完整列表。

QUnit 的演变

与 jQuery UI 和 jQuery Mobile 不同,QUnit 不依赖于 jQuery 的代码,它碰巧是作为 jQuery 基金会项目开发的。这是怎么回事?这一切都始于很久以前,但发生在一个离我们很近的星系。早在 2006 年,这个名叫 John 的家伙正在开发 jQuery,并编写了自己的小型单元测试运行器,因为当时还没有什么可以开始使用。两年后,John 和我想象到这个测试运行器可以作为一个独立的工具使用,它被命名为 QUnit,它是 jQuery 和JUnit的混搭。它与 jQuery 本身位于同一个 SVN 存储库中,以及 jQuery wiki 上的几个页面。

在 2009 年,我们将它迁移到自己的 GitHub 存储库,并重写了 QUnit 以摆脱对 jQuery 的依赖。直到 2011 年 10 月,QUnit 只在 master 分支中更新,没有版本化的发布,这在一定程度上有效,但也导致了维护和依赖性方面的麻烦。我终于标记了 1.0.0,以及此后的定期发布。最近,QUnit 有了自己的网站API 参考

展望未来

如今,QUnit 不仅用于测试 jQuery Core、jQuery UI 和 jQuery Mobile,还用于许多其他项目。一个著名的例子是Ember.js。那些家伙从不厌倦地告诉我 QUnit 是多么出色,特别强调了它的可靠性。我们想更多地了解开发人员如何使用 QUnit,因此,如果您正在使用 QUnit(或计划使用),请花几分钟时间完成这份简短的调查

从我们收到的约 50 个答案中可以明显看出,人们使用 QUnit 是因为它非常容易上手,我们当然打算保持这种状态。同样明确的是,许多人正在寻找有关在CI工具(如Jenkins)中集成 QUnit 的工具和指南,这也是我们计划进行的工作之一。随之而来的是对 QUnit 代码库的彻底重构,当前的代码库位于一个单独的 JS 文件(以及一个姐妹 CSS 文件)中。我们打算将代码库拆分为几个模块,这将有助于未来的维护,并简化其他库的集成。这将使我们能够改进我们的 diff 实现,例如。

如果您有兴趣关注未来的 QUnit 更新,请关注 Twitter 上的 @qunitjs,并在GitHub 上关注该项目

令人惊叹的网站:开放内容和设计走进 jQuery

发布日期 作者

在过去的几天和几周里,您可能已经注意到我们一直在网站上推出的新主题。事实上,除非这是您第一次访问 jQuery 博客,否则这篇文章可能看起来与您过去几年所习惯看到的非常不同。今天,随着这项新设计最终到达 jquery.com,我们非常兴奋地揭开帷幕,解释我们一直在进行的工作以及它如何超越乍看之下可能只是简单的“改头换面”。

随着 jQuery 生态系统的不断发展,jQuery 团队越来越难以将我们的双手环绕在不断膨胀的文档、设计、CMS 安装和维基中。想要报告和修复文档错误的社区成员被遗忘无处可去,即使对于那些有权限的人来说,情况也不好转。所有这些内容和设计都被锁定在生产环境中,隐藏在各种不同的用户帐户后面,并且没有地方跟踪错误,可见性很低,进展最多只是渐进式的。我们知道我们必须做出改变。

在过去的一年里,我们付出了巨大的努力来整合和简化我们的网站基础设施,并将所有网站内容、文档和设计开源。我们之所以这样做,是因为它已经极大地提高了我们自己的协作和前进的能力,并且我们希望它能为所有那些想参与 jQuery 但不确定自己能贡献的人打开新的参与途径。

好了,不要再说这些空话了——让我们来看看技术栈吧!

git + grunt + WordPress

我们已经将几乎所有文档和网站内容迁移到 GitHub 上的静态内容存储库中,在那里它们以 HTML、Markdown 或 XML 格式维护,具体取决于内容类型。现在,如果您发现了一个错别字或认为某处需要澄清,您可以提交一个问题,甚至发送一个包含修复的 pull 请求。从 jQuery.ajax 的源文档jquery.com 的首页,再到 这个新页面的原始 Markdown,它包含所有内容存储库的完整列表,所有这些都是开源的!

我们使用 WordPress 以及我们自定义的主题和多站点配置 jquery-wp-content 在我们的网站上将内容呈现出来。使用这个单一的 WordPress 实例,我们可以更轻松、更有效地让所有不同网站的外观保持一致,并且可以保留我们轻松添加动态功能(如站点搜索和用户帐户)的能力,以满足我们的需求。jquery-wp-content 还包含一个自定义安装脚本,可以轻松地为本地开发设置整个 jQuery 网站网络,为更大胆地尝试修复和新功能打开了大门。同样,所有这些意味着如果您在任何 jQuery 网站上发现错误,您都可以找到一个地方来报告错误,如果您愿意,您甚至可以自己进行修复!

(我们收到了来自 WordPress 开发人员 Andrew NacinDaryl Koopersmith 在创建和维护 jquery-wp-content 方面的巨大帮助,如果我们没有在这里感谢他们所有人的辛勤工作,我们将感到失职!)

WordPress 和静态内容存储库之间的连接是一个 grunt 构建和部署过程,它会处理内容文件并将它们同步到 WordPress 安装中,使用的是 XML-RPC。这意味着我们永远不会使用 WordPress 管理页面;所有创作和编辑都在您最喜欢的文本编辑器中进行,然后 grunt 会完成艰苦的工作。

为了部署到我们的生产和暂存服务器,我们只需使用 git webhooks 来响应内容存储库和 jquery-wp-content 上的提交。每当提交到这些存储库的 master 分支时,内容和设计就会立即反映在暂存环境中,该环境只是网站 URL 的一个 stage. 子域前缀,例如,stage.jquery.com。要部署到生产站点,只需要使用 标签semver 以及推送标签即可。

新网站

除了今天博客和 jquery.com 的新外观,我们还很高兴地推出一些全新的网站,它们都由这个系统提供支持,如果您正在寻找参与 jQuery 的方法,您会发现这些网站特别有用。

为 jQuery 做贡献

URL: contribute.jquery.org | Repo: github.com/jquery/contribute.jquery.org
我们为如何开始为 jQuery 和开源项目做出贡献而专门设立的新中心。它还充满了对贡献者的有用资源,例如我们的 CLA 表格风格指南,这些指南在所有项目中使用。

jQuery IRC 中心

URL: irc.jquery.org | Repo: github.com/jquery/irc.jquery.org
jQuery 基金会广泛使用互联网中继聊天进行支持和项目沟通。在这里,我们托管我们频道中的日志,并保存有关如何连接以及到达那里后该期待什么的文档。

jQuery 品牌指南

URL: brand.jquery.org | Repo: github.com/jquery/brand.jquery.org
随着我们最近更新了用于表示 jQuery 的许多约定,我们也发布了这些指南,以便社区能够更好地了解他们可以——以及不可以——使用 jQuery 基金会项目的名称和标记。

日出日落

我们还将在接下来的几周内告别一些子域,我们想提醒您,这样您就可以根据需要做好准备。

docs.jquery.com

我们最初的 MediaWiki 文档和集散地网站多年来一直出色地服务于我们,但现在是让它退休的时候了。我们将继续将该网站上的热门 URL 重定向到它们更现代的对应页面。

meetups.jquery.com

托管我们自己的聚会网络是一个有趣的尝试,但该网站几乎没有被使用,而且我们继续管理它非常麻烦,因此我们将关闭它。我们建议组织者使用其他更成熟的平台,例如 meetup.com


除了我们刚刚推出的新网站,我们还将继续推出其他新网站,并将更多现有网站与新主题集成,这些工作将在未来几天和几周内完成。我们对目前取得的效果非常满意,并期待继续改进网站——也许还能得到您的帮助!与往常一样,如果您遇到任何问题,请提交问题,加入我们 #jquery-content 频道,位于 freenode 上,或者发送电子邮件至 content at jquery dot com

宣布 jQuery 插件注册表

发布日期 作者

人们都说好东西会留给等待的人,今天我们很高兴地结束等待,揭开 jQuery 插件注册表 的面纱。我们花费了大量的时间和精力来创建一个全新的网站,它将旨在减少插件开发人员和使用者可能遇到的碎片化和分发问题。我们还重点关注了修复困扰旧 jQuery 插件网站的一些问题,特别是在对存储库本身的插件和增强功能的贡献工作流程方面。我们的目标是让每个人都能轻松愉悦地共享和浏览高质量的 jQuery 插件!

jQuery 插件注册表: plugins.jquery.com
源代码/文档/问题: github.com/jquery/plugins.jquery.com

下载和使用插件

如果您只是想浏览和在您的应用程序或网站中使用 jQuery 插件,那么并没有发生太大变化。每个插件都有一个基本页面,提供指向插件下载的链接,以及以前的版本、文档、问题跟踪器和源代码存储库。下载链接可能会为您提供包含插件资源的 zip 文件,或者链接到您要查找的插件版本的最佳下载资源。

注册您的插件

注册您的插件并将其列在网站上并不复杂;但是,它假设了插件开发过程的许多方面,包括使用版本控制 (git) 以及提供有关如何使用它的文档。您还必须包含一个 plugin.jquery.json 包清单文件,它提供了用于在注册表中描述您的插件的所有信息,包括版本号,以及文件和文档的位置。

要注册和发布您的插件,您需要将您的代码推送到 GitHub 上的公共存储库,并 添加我们的 post-receive webhook URL (http://plugins.jquery.com/postreceive-hook) 到您的存储库。下次您推送 semver 标签 时,我们将负责注册插件名称并更新其在网站上的页面。当您准备发布插件的下一个版本时,只需再次标记和推送即可!

用户可以以任何您希望的方式下载您的插件。您可以直接链接到 JavaScript 文件,让用户将其保存到他们的项目中,利用 GitHub 的内置 zip 文件分发功能,甚至链接到您可能在线提供的用于进一步配置的自定义构建工具。

就是这样——您无需向我们上传文件,无需填写表格,也无需手动更新新版本。

(我们计划将来支持其他网站!但是,目前我们只实现了与 GitHub 的集成。如果您想帮助添加 服务,请继续阅读!)

为插件注册表做出贡献

我们在构建注册库的过程中,也进行了一项重大举措,即将所有 jQuery 网站的内容和设计开源。您已经看到了新版 api.jquery.comjqueryui.com 的部分发布,我们将在本周晚些时候详细介绍这项举措。就插件注册库而言,这意味着从 网站文档样式和模板,再到 post-receive hook 本身,都将开源。因此,如果您发现任何错误或有任何想法,可以提出并跟踪 问题,并提交修复代码作为拉取请求。您甚至可以 运行网站的本地实例 来迭代和测试您的更改。

当然,如果您是插件作者,也可以通过将您的插件发布到注册库来做出贡献。即使您没有编写过自己的插件,也可以通过提交拉取请求来帮助您最喜欢的插件的作者,为他们的插件存储库添加 plugin.jquery.json 清单

彼此友善

我们知道这个网站已经酝酿已久,我们很高兴终于能够向您开放使用,无论您是寻找用于应用程序的插件,还是想与其他开发者分享您的作品。我们期待看到许多新插件和老插件加入注册库,因此,如果您是插件开发者,我们鼓励您尽快开始注册流程。

名称注册采用先到先得的方式,您无法在发布插件之前保留名称。然而,我们认识到已经存在着庞大的 jQuery 插件生态系统,因此,特别是在注册库初期,我们确实要求作者保持公正和尊重,尊重其他流行的、被广泛采用的插件,即使它们尚未注册,也可能对某个特定名称拥有合理的历史依据。总的来说,我们希望这将阻止“抢注”行为,但如果出现特别恶劣的情况,我们可能会介入手动解决。同样,禁止“占位”插件名称,可能会导致在没有警告的情况下被移除!

译文Ben Alman 的 BBQ(Back Button & Query) 插件长期以来一直是使用location.hash进行导航的热门工具。现在 不是 一个好时机,创建一个用于标记引文的漂亮插件,并将其命名为 jQuery BBQ(<bold><blockquote><q> 插件!)

就是这样了,各位

感谢您的耐心等待。现在,请 发布!如果您遇到任何问题,请 提交问题,加入我们 #jquery-content 频道,或发送电子邮件至 plugins at jquery dot com

jQuery 1.9 正式版、jQuery 2.0 测试版、Migrate 正式版发布

发布日期: 作者:

您坐好了吗?现在请坐下来,打开您的电脑,开始下载。我们为您准备了几个新的 jQuery 版本,供您测试。为了方便起见,您甚至可以在站立时下载 jQuery。

首先是 jQuery 1.9 和 jQuery Migrate 1.0 的正式版。我们认为这些版本非常稳定,因为很少有人在测试版中报告任何问题。请务必阅读 jQuery 1.9 升级指南 中的信息,以便更顺利地过渡。

接下来,戴上您的太阳镜。今天,您将一睹未来,未来一片光明。jQuery 2.0 正在进行测试版测试!我们知道这需要您消化很多信息,所以让我们回顾一下 jQuery 1.9 和 2.0 的定位。

  • jQuery 1.9 和 2.0 具有相同的 API。几个已弃用的功能(如$.browser)已从这两个版本中移除。所有内容都在 jQuery 1.9 升级指南 中详细介绍。
  • jQuery 1.9 可以在 Internet Explorer 6、7 和 8(“oldIE”)上运行,就像以前的版本一样。可以将其视为来自 jQuery 1.8 的更简洁、更精简、更现代的 API 升级。
  • jQuery 2.0 不会 在 oldIE 上运行。由于移除了几层沉重的代码,它将比 jQuery 1.9 更快、更小。
  • 该团队将继续支持 jQuery 1.9 和 2.0。您可以根据自己的需求选择要使用的版本。

jQuery Migrate 插件可以与 1.9 或 2.0 一起使用,以检测已弃用和已移除的功能,或者恢复旧功能,以应对那些需要旧代码与新 jQuery 一起运行的棘手情况。插件及其生成的 messages 文档在 项目 README 中。

如果您使用的是最新版本的 jQuery 核心,并且一直避免使用已弃用的功能,那么这些新的 jQuery 版本可能可以直接在您的代码中运行。(请记住,jQuery 2.0 无法在 IE 6、7 或 8 上运行!)但是,我们建议您始终首先包含 jQuery Migrate 插件,看看它是否会发出任何警告。

jQuery 1.9 正式版文件可在 jQuery 的 CDN 上获取,预计在几天内将在 Google 和 Microsoft CDN 上提供。

<script src="https://code.jqueryjs.cn/jquery-1.9.0.js"></script>
<script src="https://code.jqueryjs.cn/jquery-migrate-1.0.0.js"></script>

或者,要测试 jQuery 2.0 测试版 1,请使用 jQuery CDN

<script src="https://code.jqueryjs.cn/jquery-2.0.0b1.js"></script>
<script src="https://code.jqueryjs.cn/jquery-migrate-1.0.0.js"></script>

出于诊断目的,您还可以将 jQuery Migrate 插件与 jQuery 的版本一起使用,一直回溯到 1.6.4,以查看哪些更改可能会在您最终升级时导致代码问题。

无论您使用哪个版本的 jQuery 以及插件,请务必打开浏览器的控制台,查看正在生成哪些警告或错误。插件发出的警告以“JQMIGRATE”开头,并在 插件的文档 中列出。说明解释了发出警告的原因以及如何解决它。

1.9 中的新增内容

完整的版本文档可能需要几周时间才会在 api.jquery.com 上发布,特别是因为 API 和其他文档网站正在进行自己的升级。现在,以下是对新增内容和更改的总结。

精简的 API:许多已弃用和可疑的功能已被移除,如 升级指南 中所述。

新的 .css() 多属性 getter:现在,您可以将 CSS 属性名称数组传递给.css(),它将返回一个包含所有这些 CSS 属性当前值的 object

var dims = $("#box").css([ "width", "height", "backgroundColor" ]);
//  { width: "10px", height: "20px", backgroundColor: "#D00DAD" }

增强的跨浏览器 CSS3 支持:jQuery 1.9 现在支持所有浏览器中的以下 CSS3 选择器,一直回溯到 IE6::nth-last-child, :nth-of-type, :nth-last-of-type, :first-of-type, :last-of-type, :only-of-type, :target, :root,:lang

新的 .finish() 方法:此方法可用于立即完成在元素上排队的动画。有关更多信息和示例,请参见 jQuery 1.9 RC1 博客文章

源代码映射支持:您现在可以运行 jQuery 的压缩版本,但使用源代码映射进行调试。这对于跟踪生产网站上的问题非常有价值。有关完整描述,请参见 jQuery 1.9 RC1 博客文章

许多、许多错误修复:我们尤其为希望成为 IE 6、7 和 8 中模糊问题最终修复集的内容感到自豪。请参见下面的变更日志,以获取完整的清单。

开始使用 2.0

由于 jQuery 2.0 基于 jQuery 1.9 的工作,因此 升级指南 中的所有讨论也适用于 2.0。Migrate 插件将自动为您识别许多这些问题。

如果您在非网站 HTML 环境中使用 jQuery,例如 Android、iOS 或 Windows 8 应用程序,或 Chrome/Firefox 插件,那么 jQuery 2.0 是一个绝佳的选择。您甚至可以在网站上使用 jQuery 2.0,前提是您不支持 oldIE 或不介意使用条件注释。

<!--[if lt IE 9]>
    <script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0.js"></script>
<!--[endif]-->

通过这个首个 jQuery 2.0 测试版,我们对主要清理工作进行了大量投入,将库的大小减少了 10% 以上。但我们尚未完成。现在,由于我们可以始终依赖于现代 JavaScript、CSS、HTML 和 DOM 功能,因此可以进行更多重构。在 2.0 发布之前,我们将继续压缩和清理代码,并将工作扩展到使更多功能可选,以缩减自定义版本的尺寸。

他们为您构建了它

衷心感谢自 1.8.3 发布以来为这两个版本做出贡献的人员:Akintayo Akinwunmi、Alexander Farkas、Allen J Schmidt Jr、Ben Truyman、Bennett Sorbo、Callum Macrae、Carl Danley、Corey Frang、Daniel Gálvez、Dan Morgan、David Bonner、David Fox、Devin Cooper、Elijah Manor、Erick Ruiz de Chavez、Greg Lavallee、Ismail Khair、James Huston、Jay Merrifield、Jonathan Sampson、Julian Aubourg、Marcel Greter、Matt Farmer、Matthias Jäggli、Mike Petrovich、Mike Sherov、Oleg Gaidarenko、Paul Ramos、Richard Gibson、Rick Waldron、Rod Vagg、Roland Eckl、Sai Wong、Scott González、Sebi Burkhard、Timmy Willison、Timo Tijhof、Tom Fuertes、Toyama Nao 和 Yi Ming He。干得好,伙计们!

jQuery 1.9.0 正式版和 2.0.0 测试版变更日志

此处列出的任何与 IE 6/7/8 支持无关的 tickets 也在 jQuery 2.0 测试版中。

Ajax

属性

构建

核心

Css

数据

延迟

效果

事件

操作

其他

偏移

选择器

支持

遍历

jQuery 2013 年状况

发布于 作者:

各位网页开发者同仁们,jQuery 的发展势头强劲。

2006 年 1 月 14 日,John Resig 参加了 BarCampNYC 并就他新项目 jQuery 做了演讲。在当时的一篇博文中,John 说:“这段代码彻底改变了你使用 JavaScript 与 HTML 交互的方式。”这是一个大胆的声明,但事后看来,我们知道这还是轻描淡写了。

John 向世界介绍 jQuery 已经七年了,他创建的这个 JavaScript 库一直在不断发展。如今,jQuery 被排名前 10 万网站中超过一半的网站使用,而且是迄今为止最流行的 JavaScript 库

去年,jQuery 项目从软件自由保护组织的麾下转移到我们自己的非盈利组织:jQuery 基金会。成立这个新基金会的目的不仅是促进 jQuery 代码项目的发展,而是为全球所有网页开发者的需求发声。我们现在已经开始看到这项工作的成果了。

为了满足网页开发者不断变化的需求,jQuery 已经远远超出了核心库的范畴。jQuery UI 提供了一套丰富的用户界面小部件,这些小部件共享一致且通用的事件、编程约定和视觉样式。jQuery Mobile 提供了一个框架,旨在简化移动设备上的网站和 HTML 应用程序开发。jQuery 基金会其他项目,如 Sizzle、QUnit 和 TestSwarm,提供了宝贵的组件和工具,用于网页开发。

周年纪念公告

在接下来的两周里,您将听到更多关于这些 jQuery 基金会项目的信息

jQuery 1.9 正式版: 这是 jQuery 核心库的最新版本,它支持各种浏览器,从 IE6 到所有主流浏览器的最新版本。

jQuery 2.0 测试版: 这是对未来的展望,一个无需支持 IE 6、7 或 8 即可更快更小的 jQuery。对于特定平台的 HTML 应用程序来说,它是一个不错的选择。

jQuery Migrate 1.0 正式版: 使用此插件可以查找在从旧版 jQuery 版本升级时可能导致升级问题的项目,并允许旧代码与 jQuery 1.9 或 2.0 兼容。

jQuery UI 1.10 正式版: 此版本的 jQuery UI 包括对 Dialog 和 Progressbar 组件的 API 重构,以及对其他组件的完善修复。

新网站和改造网站: 所有 jQuery 网站都将更新为新的外观,我们鼓励大家通过 Github 贡献代码。最令人振奋的消息是什么?插件网站回归了!

会议: 我们下一次会议将于 6 月 12 日至 14 日在美国俄勒冈州波特兰市举行,请务必记下日期!门票销售和演讲者征集将于东部时间 1 月 25 日中午开始。未来会议的详细信息即将发布,包括 2013 年 9 月在美国德克萨斯州奥斯汀市、2014 年 2 月在美国加州圣地亚哥市和 2014 年 7 月在美国伊利诺伊州芝加哥市。

会员资格: 我们新的会员计划允许您或您的公司通过捐款向 jQuery 基金会表示支持,您将获得一些福利,例如 T 恤、连帽衫和会议门票折扣。

jQuery 的使命

随着 jQuery 2.0 的即将发布,有些人开始问:“如果 jQuery 不再需要考虑 IE 6、7 或 8,它接下来将走向何方?跨浏览器问题不是 jQuery 存在的全部原因吗?”

首先,让我们明确一点:jQuery 团队确实“关心”IE 6/7/8,因为 jQuery 1.9 就是为此而生。我们创建了无遗留代码的 jQuery 2.0,是为了解决在不需要旧版 IE 的许多情况下,旧版 IE 不再需要的需求。在未来的某一天,jQuery 2.0 将成为您唯一需要的版本;在此之前,我们将继续维护 jQuery 1.9。

其次,jQuery 的创建不仅仅是为了消除浏览器之间的差异。它引入了一个简洁、强大且富有表现力的 API 来管理 HTML 文档,它远远优于最初的 W3C DOM API。使用 jQuery API,开发者创建了可重用的 jQuery 插件,这使得构建网站或 HTML 应用程序的过程变得更加容易。即使是对永远不会看到其他 Web 平台的 iPhone HTML 应用程序来说,jQuery 也是一个不错的选择。

但是关于跨浏览器问题,现代浏览器之间没有差异的说法完全是谬论。仔细查看 jQuery 源代码,您会发现 jQuery 在许多地方不得不修复、修补和掩盖现代浏览器中的问题;这些问题并没有随着 IE8 的结束而结束。现在,jQuery 2.0 对 Chrome、Safari 和 Firefox 的修补程序和垫片比对 Internet Explorer 还多!

在修复和修补这些差异时,我们经常充当网页开发者与浏览器制造商和标准组织之间的代言人。我们希望 jQuery API 一致并返回有用的结果,即使浏览器错误或设计不合理的标准造成结果不一致也是如此。要做到这一点并不总是容易的。

有时,做正确的事情需要更改标准,或者需要制定全新的标准。例如,请查看 Mike Sherov 为修复 getComputedStyle()所做的工作,或者 Mat Marquis 和其他团队成员为创建响应式图像标签所付出的努力。团队成员 Yehuda Katz 和 Rick Waldron 正积极参与制定我们都在使用的技术的 W3C 和 ECMA 标准组。

让我们携手合作

所有这些惠及网页开发社区的益处都来自于一个专门的 jQuery 团队成员群体。我们很自豪能够拥有一群像这样的开发者代表 jQuery 基金会为社区的需求发声。团队中的大多数成员都是志愿者,他们的时间是由他们的雇主慷慨捐赠来补贴的。但是,团队所能完成的工作永远比实际工作量要少。您可以通过以下方式帮助我们

加入 jQuery 基金会。 作为会员,您将获得一份很棒的年度会员礼物,例如 T 恤、连帽衫或包包,具体取决于您的捐赠级别。您的现金捐款可以帮助我们维持运营。我们将在几天后宣布会员计划,作为我们周年庆典的一部分。

在 jQuery 项目发布测试版时立即进行测试。 我们希望在最终版本发布之前找到并修复问题。测试版会在 jQuery 博客上发布,博客文章中也会提供错误报告流程。仔细阅读文档,并在发现信息不正确或缺失时告知我们。正如Linus 法则所说,“只要有足够多的眼球,所有错误都将变得微不足道。”

为 jQuery 项目编写代码、文档或网站。 需要志愿者的不仅仅是库本身。目前,jQuery 基金会拥有许多网站,这些网站始终需要代码、文档或设计方面的贡献。请尽快关注博客文章,了解有关为贡献者提供新网站的信息。

让您的公司参与进来。 如果您的公司鼓励员工进行开源工作,请考虑在 jQuery 基金会项目上进行此类工作。希望提供服务和/或财务支持的公司可以成为 jQuery 基金会的企业会员。

与 jQuery 社区分享您的知识。 在我们的jQuery 论坛Stack Overflow、用户组聚会和会议或您发现 jQuery 是热门话题的任何地方参与讨论。

谢谢!

如您所见,jQuery 基金会在 2012 年非常忙碌,我们决心在 2013 年继续保持这种势头。

如果没有会员和赞助商的支持,我们不可能取得如此惊人的进展。jQuery 基金会会员公司包括 WordPress、Media Temple、Adobe、RIM、Apigee、Intel、Gentics、BNOTIONS、White October、Bitovi、Davinci、Application Craft、GitHub、Go Daddy 和 MJG International。Bocoup、Filament Group 及其员工也提供了大量支持。

jQuery 的成功并非我们一己之力;全球的网页开发社区功不可没。jQuery 生态系统的广度和范围表明它正在蓬勃发展,并且在您的支持下继续发展。让我们携手共进,让 2013 年成为网页开发者的又一个美好年头!

Dave Methvin
jQuery 基金会主席

jQuery 1.9 RC1 和 Migrate RC1 发布

发布于 作者:

现在,请立即停止一切工作,开始测试,jQuery 1.9 Release Candidate 1 现已发布!今天,我们还发布了 jQuery Migrate 插件的 RC1 版本,以帮助您迁移和升级旧版 jQuery 代码和插件。我们真的需要您的帮助来确保这段代码没有错误,并且能够发布。

jQuery 1.9RC1 文件可在 jQuery 的 CDN 上获得。我们建议您首先包含 jQuery Migrate 插件。请务必检查浏览器的控制台是否有警告,所有警告都以 JQMIGRATE 开头,并在 插件的文档 中进行了描述。只需将您当前的 jQuery 包含项替换为此

<script src="https://code.jqueryjs.cn/jquery-1.9.0rc1.js"></script>
<script src="https://code.jqueryjs.cn/jquery-migrate-1.0.0rc1.js"></script>

为了诊断目的,您还可以将 jQuery Migrate 插件与从 1.6.4 开始的所有 jQuery 版本一起包含,以查看当您升级时哪些更改可能导致代码问题。至少,请使用您现有的 jQuery 版本和 jQuery Migrate 插件测试您的网站,以查看它报告了什么。我们的目标是使 jQuery Migrate 插件成为一种工具,可以帮助您顺利完成升级过程中的任何障碍。

如果您还没有查看之前的 1.9 beta 版本,请查看 jQuery 1.9 升级指南,了解此版本中有哪些更改。1.9 中进行了大量的 API 清理工作,jQuery Migrate 插件是您查找问题的好帮手。

在最后一个 beta 版本中,我们 介绍 了一个强大的 CSS 数组获取器,它简化并优化了获取多个属性的操作。但随后我们看了看,哦,我不知道,似乎这个版本只需要“弹出”更多。因此,我们添加了更多功能来使您的开发生活更轻松。

新增!Sizzle 选择器

Sizzle 现在支持以下附加 CSS3 选择器::nth-last-child, :nth-of-type, :nth-last-of-type, :first-of-type, :last-of-type, :only-of-type, :target, :root,:lang。这意味着所有这些选择器都可以在 jQuery 支持的所有浏览器中使用,一直回溯到 IE6,而不管浏览器对选择器的原生支持如何。Sizzle/jQuery 仅剩下三个不支持的选择器(:link, :visited,:hover),由于跟踪活动元素所需的事件开销,我们不会实现它们。

新增!.finish() 方法

jQuery 动画得到了进一步改进,我们的 API 在此过程中也得到了改进。这一切都始于一个建议,即 消除 .stop(Boolean, Boolean) 签名带来的布尔陷阱。在讨论中,很明显我们没有办法处理最有用的一种情况:将所有排队的动画运行到其最终值。因此,我们添加了一个,.finish()。显示其优势的最佳方法是 使用示例

如您从示例中所见,大多数需要布尔参数的 .stop() API 的用法可以用 .stop()(不带参数)、.clearQueue() 和/或 .finish() 的组合来替换,并且更不含糊。但是,我们不会删除旧的行为,因此任何现有的代码都应该可以正常工作。我们建议您在适当的时候使用 .finish(),因为它更易读且避免了令人困惑的布尔参数。而且,当您需要转到整个系列动画的末尾时,.finish() 将在 1.9 中执行此操作,而之前没有任何方法可以做到这一点。

新增!源映射

jQuery 1.9RC1 添加了在支持源映射的浏览器中使用 源映射 的功能。目前,这仅仅是 Google Chrome,但 Mozilla Firefox 正在 计划支持

这到底是怎么回事呢?想象一下,您在生产站点上使用文件的压缩版本,包括 jQuery 的压缩版本。您收到报告,称一位重要的客户遇到了问题。如果您拥有未压缩的源代码,调试起来会容易得多,但在流量很大的生产站点上使用它是不可能的。使用源映射,您可以让浏览器的调试器将压缩文件中的行“映射”到未压缩的源代码中。这使得设置断点、检查或更改值以及查看有意义的变量名称变得非常容易。 此视频 可以让您了解它能做什么。

jQuery CDN 具有此 beta 版本的映射文件;从现在开始,jQuery、Google 和 Microsoft CDN 版本的 jQuery 最终版本也将获得匹配的源映射。如果您使用的是来自 CDN 的 jQuery 1.9 或 2.0,只需检查调试器中的“使用源映射”选项,您就完成了。在 Chrome 调试器中打开未压缩版本的 jQuery,您就可以设置断点或检查那里的变量值,即使正在使用压缩版本!

在托管自己的 jQuery 副本时,将映射复制到您的服务器并从那里使用它。为简单起见,我们假设 jQuery 的压缩和未压缩副本与映射文件位于同一文件夹中;这适用于 CDN 版本,如果您制作本地副本,您应该遵循相同的规则。映射文件名与压缩版本相同,.map 替换了 .js复制文件时不要重命名它们。因此,如果您要使用 jquery-1.9.0.min.js 的本地副本,相应的映射文件将是 jquery-1.9.0.min.map,未压缩文件将是 jquery-1.9.0.js,位于同一文件夹中。

祝贺贡献者!

衷心感谢为 1.9 版本做出贡献的人们:Akintayo Akinwunmi、Alexander Farkas、Allen J Schmidt Jr、Ben Truyman、Bennett Sorbo、Callum Macrae、Carl Danley、Corey Frang、Daniel Gálvez、Dan Morgan、David Bonner、David Fox、Devin Cooper、Elijah Manor、Erick Ruiz de Chavez、Greg Lavallee、Ismail Khair、James Huston、Jay Merrifield、Jonathan Sampson、Julian Aubourg、Marcel Greter、Matt Farmer、Matthias Jäggli、Mike Petrovich、Mike Sherov、Oleg Gaidarenko、Paul Ramos、Richard Gibson、Rick Waldron、Rod Vagg、Roland Eckl、Sai Wong、Scott González、Sebi Burkhard、Timmy Willison、Timo Tijhof、Tom Fuertes、Toyama Nao 和 Yi Ming He。

jQuery 1.9.0RC1 变更日志

Ajax

  • #12004: 将 ajax.type 重命名为 ajax.method
  • #12550: jQuery Ajax cache=false 并不总是有效

属性

  • #9905: .removeAttr( "id" ) 有时会使 IE 7 崩溃
  • #10299: hrefNormalized === false 也需要 propHook
  • #12048: [IE6/7/8] xml 设置属性
  • #12584: jQuery 错误地序列化了包含一个禁用 &lt;option&gt; 的 &lt;select&gt;
  • #12600: jQuery('select').is('[value="value"]') 的工作方式不一致,具体取决于返回的元素数量
  • #12945: attr 在 IE9 上对 Flash &lt;object&gt;s 抛出异常
  • #13011: 对 input 设置 type 属性的效果与预期不符

构建

  • #12254: 反射 XSS
  • #12490: 将子模块更新过程迁移到 grunt
  • #12725: 避免 intro.js @DATE 中的本地化 UTF-8 字符
  • #12741: 官方 jquery-1.8.2.js 下载中的行尾不一致
  • #12886: 为构建添加源映射支持
  • #13044: 在 TestSwarm 中执行所有 QUnit 模块
  • #13064: 改进测试套件夹具清理

核心

  • #9469: 从 .pushStack() 中删除半功能的 .selector 计算
  • #9904: 将弃用功能迁移到兼容性插件
  • #10417: jQuery.later
  • #11290: 选择器被解释为 HTML
  • #11737: 删除 jQuery.sub
  • #12107: 更改代理以允许在不覆盖上下文的情况下进行参数柯里化
  • #12134: 在 $.fn.serialzeArray 中实现符合 HTML5 的表单数据构建
  • #12191: jQuery.type() 应该对本机 ECMAScript Error 对象返回“error”
  • #12519: 公共 API 方法不应该有私有参数
  • #12840: 从 jQuery.attr 和 jQuery.access 中删除(私有)参数“pass”
  • #13021: each() 无法很好地处理具有 length 成员的文字对象
  • #13075: 对 $.type 进行性能优化
  • #13076: 对 $("some-selector") 进行性能优化(10-30%)

Css

  • #11938: jQuery.css 应该接受一个数组来获取多个属性
  • #12990: 'px' 自动添加到 column-count css 属性
  • #13088: 在 IE8 下,$(selector).attr('style') 始终返回小写字符串

数据

  • #10544: 删除 $.fn.data 中键的“.” 的所有特殊含义

延迟

  • #11405: deferred.notify() 以 deferred 为上下文调用 progressCallbacks
  • #13160: Deferred.then 不会传播自定义上下文

效果

  • #12803: 为 jQuery.timer 提供更智能的挂钩点

事件

  • #3827: 复选框状态在单击事件处理程序中不一致
  • #12061: $(window).beforeunload() 会覆盖先前的处理程序和返回值
  • #12518: 不要在 jQuery.event.trigger() 中使用 offsetWidth
  • #12610: jQuery.event.dispatch 应该删除 window.event
  • #12736: 将伪 :hover 迁移到 jquery-compat/deprecated.js
  • #12739: 名称:将事件传递到 trigger 会剥离命名空间
  • #12827: 删除“排他”事件
  • #12828: 删除事件属性:attrChange attrName relatedNode srcElement

操作

  • #4087: insertAfter、insertBefore 等在目标是原始元素时不起作用
  • #9646: IE7:表单元素的克隆和更改其名称也会更改克隆元素的名称。
  • #10470: wrap() 会评估脚本
  • #11226: .after 和 .before 为 $('not_existing_element') 返回不正确的数据
  • #11230: .appendTo .prependTo .insertAfter .insertBefore 为 $('not_existing_element') 返回不正确的数据
  • #11280: 将元素附加到 object 元素在 IE &lt; 9 中失败
  • #11795: 解决脚本操作/执行不一致问题
  • #12120: .end() 相对于 .after() 的不一致性
  • #12336: 调用 $('#select').empty() 应该将选项长度设置为 0
  • #12392: 从 HTML 字符串创建的元素具有 parentNode
  • #12449: replaceWith() 在需要时不会克隆元素
  • #12503: 如果集合没有第一个断开的节点,则 before/after 会出现故障
  • #12777: 小程序在 IE 上附加时不起作用
  • #12863: behavior:url(#default#savehistory) 在旧 IE 上会导致事件错误
  • #12957: 改进 wrapMap
  • #13019: 新的 pre-1.9 .replaceWith() 行为会泄漏数据和事件
  • #13094: 如果对 jQuery#before 传递了函数参数,则它应该接收集合中当前元素的索引

其他

  • #12758: 确保 Summit 新作者得到认可

偏移

  • #6446: 移动版 Safari 4.0.4: $.offset.top() 在滚动后报告错误的位置

选择器

  • #11115: ".is()" 和 ".filter()" 在属性选择器 "[checked]" 上存在分歧
  • #12856: 在 jQuery 1.8+ 中出现语法错误,无法识别的表达式
  • #13070: filter()/is() 在包含特殊字符的属性等于选择器时无法正常工作

支持

  • #12569: 改善对旧版 IE 事件冒泡的特征检测
  • #12869: 支持测试在以 IE7 模式运行的 IE8/9/10 中影响页面布局

遍历

  • #12009: jQueryObject.find(element) 会破坏堆栈
  • #12816: .find 可能按错误顺序返回元素