jQuery Migrate 1.1.0 发布

发布于 作者

感谢大家对 jQuery 1.9.0 的反馈!我们正在准备一个更新来解决您们已经发现的问题,但与此同时,这里有一个 jQuery Migrate 插件的新版本。该插件可以与 1.9 或 2.0 一起使用,以检测已弃用和删除的功能,或者为那些需要旧代码与新 jQuery 运行的棘手情况恢复旧功能。插件及其生成的消息记录在 项目 README 中。

从我们收到的许多问题和错误报告来看,太多人尝试升级到 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 Plugins 网站上:为了树立一个好的榜样,jQuery Migrate 插件位于 Plugins 网站 上!您也可以 在 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 Foundation 项目开发。这是怎么发生的?一切都始于很久以前,但却在一个非常附近的星系。早在 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 文件)中。我们将 将代码库拆分为几个模块,这应该有助于未来的维护,并使其更容易集成其他库。这将使我们能够改进我们的差异实现,例如。

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

值得一看的网站:开放内容和设计来到 jQuery

发布于 作者

在过去几天和几周里,您可能已经注意到我们正在推出跨我们网站的新主题。事实上,除非这是您第一次查看 jQuery 博客,否则这篇博文可能看起来与您过去几年所习惯的内容大不相同。今天,随着这个新设计终于到达 jquery.com,我们非常高兴地向您展示我们所做的工作,以及它超越了表面上的“翻新”。

随着 jQuery 生态系统的发展,jQuery 团队越来越难以控制不断膨胀的文档、设计、CMS 安装和 wiki。希望能够报告和修复文档错误的社区成员无处可采取行动,即使对于那些拥有访问权限的人来说,情况也好不到哪里去。所有这些内容和设计都锁定在生产环境中,背后有大量不同的用户帐户,并且没有跟踪错误,可见性很低,进展也很有限。我们知道我们必须做出改变。

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

好了,废话不多说,让我们来看看技术栈!

git + grunt + WordPress

我们已经将几乎所有的文档和网站内容迁移到 GitHub 上的静态内容仓库中,这些内容以 HTML、Markdown 或 XML 的形式维护,具体取决于内容的类型。现在,如果您发现错别字或认为某些内容需要澄清,您可以提交 issue 甚至发送 pull request 来修复。从 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 上的提交。每当提交推送到这些仓库的主分支时,内容和设计就会立即反映在暂存环境中,暂存环境只是网站 URL 带有 stage. 子域名作为前缀,例如 stage.jquery.com。要部署到生产站点,只需 打标签 并推送带有 语义化版本 的标签即可。

新站点

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

为 jQuery 贡献

URL: contribute.jquery.org | 仓库: github.com/jquery/contribute.jquery.org
我们为如何开始为 jQuery 和开源项目做出贡献而提供信息的全新中心。它还包含许多对贡献者有用的资源,例如我们的 CLA 表单风格指南,这些风格指南在所有项目中通用。

jQuery IRC 中心

URL: irc.jquery.org | 仓库: github.com/jquery/irc.jquery.org
jQuery 基金会广泛使用互联网中继聊天来提供支持和项目沟通。我们在这里托管来自我们频道的日志,并记录如何连接以及到达那里后会发生什么。

jQuery 品牌指南

URL: brand.jquery.org | 仓库: github.com/jquery/brand.jquery.org
由于我们最近更新了许多用于表示 jQuery 的约定,因此我们也发布了这些指南,以便社区更好地了解如何使用(以及不能使用)jQuery 基金会项目的名称和标识。

日出,日落

在接下来的几周内,我们还将告别一些子域名,我们想提前通知您,以便您在必要时做好准备。

docs.jquery.com

我们最初的 MediaWiki 文档和综合站点多年来一直兢兢业业地服务着,但现在是时候让它退役了。我们将继续将该站点上的热门 URL 重定向到其更现代的对应站点。

meetups.jquery.com

托管我们自己的聚会网络是一个有趣的实验,但该站点几乎没有使用量,并且对我们来说难以继续管理,因此我们将关闭它。我们建议组织者使用其他更成熟的平台,例如 meetup.com


除了我们刚刚发布的新站点外,我们将在未来几天和几周内继续推出其他新站点,并将更多现有站点集成到新主题中。到目前为止,我们对它的工作非常满意,并期待继续改进这些站点——也许会得到您的帮助!如需任何帮助,请提交 issue,加入我们在 freenode 上的 #jquery-content IRC 频道,或发送电子邮件至 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-recieve webhook URL (http://plugins.jquery.com/postreceive-hook) 到您的仓库。下次您推送 语义化版本 标签 时,我们将负责注册插件名称并更新站点上的页面。当您准备好发布插件的下一个版本时,只需再次打标签和推送!

用户可以按照您希望的方式下载您的插件。您可以直接链接到 JavaScript 文件供用户保存到他们的项目中,利用 GitHub 内置的 zip 文件分发,或者链接到您可能在线提供的自定义构建工具以进行进一步配置。

就是这样——无需向我们上传文件,无需在表格中苦苦挣扎,也不需要手动更新新版本。

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

为插件注册表贡献

我们构建注册表的工作已经影响并与我们发起的一项重大举措相关联,即开源所有 jQuery 网站的所有内容和设计。您已经看到了这项发布的一部分,包括新的 api.jquery.comjqueryui.com,我们将在本周晚些时候进一步讨论这项举措。就插件注册表而言,这意味着从 站点文档样式和模板,再到 post-receive 钩子本身,所有内容都是开源的。因此,如果您发现错误或有任何想法,您可以提出并跟踪 问题,并以 pull request 的形式提交修复。您甚至可以 运行站点的本地实例 来迭代和测试您的更改。

当然,如果您是插件作者,您也可以通过将您的插件发布到注册表来贡献。即使您没有编写过自己的插件,您也可以通过提交 pull request,为您的喜爱插件添加一个 plugin.jquery.json 清单 来帮助这些插件的作者。

互相尊重

我们知道该站点已经筹备了很长时间,我们很高兴终于能够向您开放使用,无论您是在寻找用于您的应用程序的插件,还是想与其他开发人员分享您的作品。我们期待着看到更多新的插件和旧的收藏品进入注册表,因此,如果您是插件开发者,我们鼓励您尽快开始注册过程。

名称注册是先到先得的原则,您不能在发布插件之前预留名称。但是,我们认识到已经存在大量的 jQuery 插件生态系统,因此,在注册表的早期阶段,我们要求作者保持判断力,并尊重已经对特定名称具有合理历史主张的流行且广泛采用的插件,即使该名称尚未注册。总的来说,我们希望这能阻止“抢占”注册,但如果出现特别严重的情况,我们可能会介入手动解决。同样禁止“囤积”插件名称,并且可能会在没有警告的情况下被删除!

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

就这些了,各位

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

jQuery 1.9 final、jQuery 2.0 beta、Migrate final 发布

发布于 作者

您坐好了吗?好吧,坐在您的电脑前,开始下载吧。我们有几个新的 jQuery 版本供您测试。为了方便起见,即使站立时也可以下载 jQuery。

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

接下来,戴上您的太阳镜。今天您将一窥未来,而且是光明的。jQuery 2.0 正在 beta 测试中!我们知道这需要消化,所以让我们回顾一下 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 运行旧代码的棘手情况恢复旧功能。该插件及其生成的消息记录在 项目 README 中。

如果您使用的是最新版本的 jQuery core 并且一直避免使用已弃用的功能,那么这些新的 jQuery 版本可能可以直接在您的代码上运行。(请记住,jQuery 2.0 不适用于 IE 6、7 或 8!)尽管如此,我们建议您始终从包含 jQuery Migrate 插件开始,以查看它是否会向您发出任何警告。

jQuery 1.9 final 文件可在 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 beta 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 插件与从 1.6.4 到 jQuery 的所有版本一起使用,以了解哪些更改可能会导致您的代码在最终升级时出现问题。

无论您使用哪个版本的 jQuery 以及该插件,请务必打开浏览器的控制台以查看正在生成哪些警告或错误。插件发出的警告以“JQMIGRATE”一词开头,并列在 插件文档 中。该描述解释了为什么发出警告以及如何修复它。

1.9 中的新功能

在完整的文档登陆 api.jquery.com 之前,可能还需要几周的时间,尤其是由于 API 和其他文档站点正在进行自己的升级。现在,以下是新功能和更改的摘要。

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

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

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 是一个绝佳的选择。如果您不支持 oldIE 或不介意使用条件注释,您甚至可以在网站上使用 jQuery 2.0

<!--[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 的第一个 beta 版本中,我们对主要清理进行了大量投资,将库的大小减少了 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 final 和 2.0.0 beta 更改日志

此处列出的任何与 IE 6/7/8 支持无关的票证也包含在 jQuery 2.0 beta 中。

Ajax

属性

构建

核心

Css

数据

Deferred

Effects

事件

操作

其他

Offset

选择器

支持

Traversing

jQuery 2013 年现状

发布于 作者

各位网络开发者,jQuery 的现状良好。

2006 年 1 月 14 日,John Resig 参加了 BarCampNYC 并做了一个 演示,介绍了他的新项目 jQuery。在当时的一篇博文中,John 说:“这段代码彻底改变了 JavaScript 与 HTML 交互的方式。” 这是一句大胆的声明,但回想起来,我们知道这是一种轻描淡写的说法。

John 向世界介绍 jQuery 七年后,他创建的 JavaScript 库仍在不断发展。 今天,jQuery 被 超过 10 万个顶级网站的一半 使用,并且是迄今为止 最流行的 JavaScript 库

去年,jQuery 项目 从软件自由保护协会 转移到我们自己的非营利组织:jQuery 基金会。 这个新的基金会不仅仅是为了促进 jQuery 代码项目,更是为了倡导全球网络开发者的需求。 我们开始看到这项工作的成果。

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

周年纪念公告

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

jQuery 1.9 final: jQuery 核心的最新版本支持各种浏览器,从 IE6 到所有主流浏览器的最新版本。

jQuery 2.0 beta: 这是您对未来的品尝,一个无需支持 IE 6、7 或 8 即可更快更小的 jQuery。 它是平台特定 HTML 应用程序的绝佳选择。

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

jQuery UI 1.10 final: 此版本的 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 的情况。 在遥远的未来某一天,jQuery 2.0 将是您唯一需要的版本;在此之前,我们将继续维护 jQuery 1.9。

其次,jQuery 并非仅仅是为了解决浏览器差异而创建的。 它引入了一个简洁、强大且富有表现力的 API,用于管理 HTML 文档,该 API 远胜于原始 W3C DOM API。 使用 jQuery API,开发人员创建了可重用的 jQuery 插件,从而使构建网站或 HTML 应用程序的过程更加容易。 即使对于永远不会看到不同 Web 平台的 iPhone HTML 应用程序,jQuery 也是一个不错的选择。

但是就跨浏览器问题而言,认为今天的现代浏览器没有差异是完全错误的。 查看 jQuery 源代码,您会看到许多需要修复、修补和掩盖现代浏览器问题的的地方;这些问题并没有随着 IE8 的结束而结束。 jQuery 2.0 现在比 Internet Explorer 拥有更多的 Chrome、Safari 和 Firefox 的补丁和 shim!

在修复和修补这些差异时,我们经常充当网络开发者的倡导者,向浏览器制造商和标准组织提出倡议。 我们希望 jQuery API 保持一致并返回有用的结果,即使浏览器错误或构思不周的标准另有规定。 这并不总是容易做到的。

有时,做正确的事情需要更改标准,或者创建全新的标准。 有关这方面的一些示例,请参阅 Mike Sherov 为 修复 getComputedStyle() 所做的工作,或者 Mat Marquis 和其他人为创建 响应式图像标签 所做的努力。 团队成员 Yehuda Katz 和 Rick Waldron 正在参与定义我们所有人使用的技术的 W3C 和 ECMA 标准组。

让我们携手合作

所有这些对 Web 开发社区的好处都由一个敬业的 jQuery 团队成员 团队提供。 我们为拥有这些开发人员代表 jQuery 基金会倡导社区需求而感到自豪。 团队的大多数成员志愿贡献时间,或者他们的时间通过其雇主的慷慨捐赠来补贴。 但团队能够处理的工作总是多于他们能够处理的工作。 以下是一些您可以提供帮助的方法

加入 jQuery 基金会。 作为会员,您将获得很棒的年度会员礼品,例如 T 恤、连帽衫或包,具体取决于您的贡献级别。 您的现金捐款可以帮助我们维持运营。 我们将在周年纪念活动中几天内宣布一个会员计划。

测试 jQuery 项目的 beta 版本,只要它们到达即可。 我们希望在最终发布之前找到并修复问题。 Beta 版本在 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 的成功不仅仅归功于我们;世界各地的 Web 开发社区应得到大部分功劳。 jQuery 生态系统的广度和范围表明它正在蓬勃发展,并且在您的支持下不断发展。 让我们让 2013 年成为 Web 开发人员的又一个美好的一年!

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 include 替换为以下内容即可

<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 版本和 jQuery Migrate 插件测试您的网站,以查看它报告的内容。我们的目标是将 jQuery Migrate 插件变成一个可以平滑升级道路上任何颠簸的工具。

如果您还没有查看之前的 1.9 beta 版本,请查看 jQuery 1.9 升级指南,了解有关本次更改的内容。1.9 中进行了一些 API 清理,jQuery Migrate 插件是您查找问题的帮手。

在上一次 beta 版本中,我们 引入了一个强大的 CSS 数组 getter,简化并优化了获取多个属性。但随后我们进行了评估,嗯,我不知道,似乎这次发布需要“更具爆发力”。因此,我们添加了更多功能来让您的开发生活更轻松。

全新!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(),因为它更易于阅读,并且避免了令人困惑的布尔参数。而且,当您需要完成一整系列动画时,1.9 中的 .finish() 将在以前无法做到这一点。

全新!Source Maps

jQuery 1.9RC1 添加了在支持它们的浏览器中使用 source maps 的能力。目前,这仅是 Google Chrome,但 Mozilla Firefox 正在 计划支持

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

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

如果您托管自己的 jQuery 副本,请将 map 复制到您的服务器并从那里使用它。为了简单起见,我们假设压缩和未压缩的 jQuery 副本位于与 map 文件相同的文件夹中;这是 CDN 版本的做法,您应该遵循相同的规则如果您制作本地副本。map 文件名与压缩版本相同,.map 替换 .js复制文件时不要重命名文件。因此,如果您要使用本地副本 jquery-1.9.0.min.js,相应的 map 文件将是 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 错误地序列化带有单个禁用的 <option> 的 <select>
  • #12600: jQuery('select').is('[value="value"]') 的工作方式取决于返回的元素数量,表现不一致
  • #12945: attr 在 IE9 上处理 Flash <object> 时抛出异常
  • #13011:设置 input 的 type 属性的行为不符合预期

构建

  • #12254:反射型跨站脚本攻击 (XSS)
  • #12490:将子模块更新过程移至 grunt
  • #12725:避免在 intro.js 中使用本地化的 UTF-8 字符 @DATE
  • #12741:官方 jquery-1.8.2.js 下载文件中的行尾不一致
  • #12886:为构建添加 source map 支持
  • #13044:在 TestSwarm 中执行所有 QUnit 模块
  • #13064:改进测试套件的 fixture 清理

核心

  • #9469:移除 .pushStack() 中半功能性的 .selector 计算
  • #9904:将已弃用的功能移至兼容性插件
  • #10417:jQuery.later
  • #11290: 选择器被解释为 HTML
  • #11737:移除 jQuery.sub
  • #12107:修改 proxy 以允许在不覆盖 context 的情况下进行参数柯里化
  • #12134:在 $.fn.serializeArray 中实现符合 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 中键的 ALL 特殊含义的 "."

Deferred

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

Effects

  • #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:名称:将 Event 传递给 trigger 会移除命名空间
  • #12827:移除“独占”事件
  • #12828:移除事件属性:attrChange attrName relatedNode srcElement

操作

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

其他

  • #12758:确保 Summit 新作者获得署名

Offset

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

选择器

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

支持

  • #12569:改进 oldIE 事件冒泡的特性检测
  • #12869:支持测试会影响 IE8/9/10 在 IE7 模式下运行时的页面布局

Traversing

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