jQuery 1.7.2 RC1 发布

发布日期: 作者:

jQuery 1.7.2 即将发布!为了确保我们修复了投票选出的“最有可能惹人厌的”错误,并且没有引入任何新的错误,我们需要你的帮助来测试这个候选版本。 你可以从 jQuery CDN 获取代码

只需几分钟即可将这个最新的文件导入并使用你的代码进行测试。如果你有很多页面,下面列出的已修复错误清单可能有助于你确定要测试哪些内容。当然,如果你报告了一个错误或受以下列出的错误影响,请重新测试以确保我们已彻底修复它。我们已经在内部针对 jQuery UI 和 jQuery Mobile 的当前版本进行了测试。 jQuery Mobile 1.1 RC1 中存在一个兼容性问题,该问题已经修复,将在他们的下一个版本中解决。

想要更轻松地使用最新的 jQuery 测试你的网站吗?在 Windows 上,你可以使用出色的 Fiddler 工具并创建一个 自动响应器规则 将你的 HTTP 脚本请求指向上面的文件位置。然后,你就可以在你的 PC 上使用最新的 jQuery 测试你的实时网站,而无需修改任何文件!如果你知道其他平台上类似的工具,请在下面的评论中留言。

如果你特别关注 IE6 支持,请帮助我们。我们正在 IE6 中运行单元测试时遇到间歇性问题。我们无法确定这些问题的原因,但问题并不总是发生,并且我们测试套件的庞大规模可能会压垮一个已经存在十多年的浏览器。如果你在实际代码中观察到任何可重现的错误,请告诉我们并尝试提供尽可能小的测试用例。

你可以使用 错误跟踪器 报告错误;请务必在 jsFiddle 上创建一个测试用例,以便我们能够轻松地找出问题。如果你不确定是否为错误,请咨询我们的 论坛StackOverflow。请不要在下面的博客评论中报告错误。

jQuery 1.7.2rc1 变更日志

以下是 1.7.2rc1 版本的当前变更日志。

Ajax

  • #4624: default ajaxSettings.contentType 中的字符集
  • #10978: jQuery.param() 应允许非原生构造的对象作为属性值
  • #11264: evalScript() 使用 ajaxSetup() 设置的默认值
  • #11426: jQuery.ajax() 在 IE 中请求 JPG 图片时总是失败

属性

  • #5571: 在 jQuery 中将 undefined 传递给任何设置器时允许链式调用
  • #10828: attr(“coords”) 在 IE7 中返回 undefined
  • #10870: $.removeAttr(“selected”) 的行为不正确
  • #11316: 首先按元素类型考虑查找 valHooks,然后按节点名称查找,而不是反过来

构建

  • #10692: 配置 jshint 选项以更准确地匹配风格指南
  • #10693: 将单元测试中的“在 iframe 中测试某物”代码通用化
  • #10901: 如果测试程序从 file:// 运行或没有 PHP,则让单元测试失败
  • #10902: 能够在单元测试中测试 jQuery 的构建版本
  • #10931: 单元测试不应该需要互联网访问

核心

  • #10466: jQuery.param() 将包装的基本类型误认为深层对象

Css

  • #10639: outerWidth(true) 和 css(‘margin’) 在 Webkit 中返回 % 而不是 px
  • #10754: 让 jQuery.swap 返回回调的返回值,而不仅仅是执行它
  • #10782: 计算宽度不正确
  • #10796: IE7 中 $(‘#el’).css.(‘background-position’) 的错误
  • #10858: css.js 正则表达式不完整
  • #11119: curCSS 函数只需要 2 个参数

数据

  • #11309: 十六进制格式的 data-* 属性解析不正确

延迟

  • #11306: 在 $.Callbacks 对象上调用 .disable() 或 .lock() 会破坏其 fired() 状态

尺寸

  • #3838: $(document).height() 在 IE6 中不正确

效果

  • #8498: 动画钩子
  • #10006: 当对文档片段调用时,方法 show 在所有浏览器中的行为不符合预期
  • #10848: 动画切换在某些原子边缘情况下会丢失状态跟踪
  • #11415: 在 CSS 值非法的情况下静默忽略负值

事件

  • #8165: .live(‘click’, handler) 在 Chrome 中针对带有子元素的禁用按钮触发
  • #10819: 消除“this.on.call(this, “
  • #10878: $(“select”).live(“change”, function(){ …在 jQuery 1.7 中的 IE8 中损坏
  • #10961: 在 IE6-9 中使用 jQuery 1.7.1 时,XRegExp 中的错误
  • #10970: .on() 选择器参数不适用于 :not(:first) 选择器
  • #10984: 无法关闭() 自定义事件 ($.event.special)
  • #11021: 悬停技巧会破坏名为“悬停”的命名空间
  • #11076: .clone(true) 会丢失委托过滤器
  • #11130: jQuery.fn.on: 使用 null 选择器绑定映射会忽略数据
  • #11145: $(document).on() 不适用于 name=”disabled”

操作

  • #9427: 将 undefined 传递给 .text() 不会触发设置器
  • #10753: 将 evalScript 函数内联到 manipulation.js 中,因为它只使用一次
  • #10864: 文档片段上的 text() 方法总是返回空字符串
  • #11055: 更新 HTML5 Shim 元素列表以支持最新的 html5shiv
  • #11217: Webkit 中的附加问题
  • #11291: 使用 HTML5 节点名称克隆 XMLDoc 在 IE 中会断裂
  • #11323: 类型为“text/ecmascript”的脚本标签泄漏到 DOM 中
  • #11356: safeFragment 内存泄漏

杂项

  • #10952: .fired() 在 Callbacks 对象上标记为“once”时不起作用
  • #11257: 如果缺少 PHP,则测试套件中源文件的路径错误

队列

  • #10967: .promise() 不会将方法附加到目标

支持

  • #7986: 如果页面具有 DIV-元素 CSS,则 $.support.boxModel 中的错误
  • #11048: 支持测试会影响 IE6-9 中定位元素的布局
  • #11337: $.support.reliableMarginRight 中的错误

遍历

  • #11370: $(‘<div>’).siblings() 抛出异常

jQuery 1.7.2 Beta 1 发布

发布日期: 作者:

互联网的朋友们,大家好,我们是 jQuery 核心团队!我们有一段时间没有见面了,但在假期期间我们一直忙于修复你们报告的错误。这些努力的结果就是 jQuery 1.7.2 Beta 1。我们决定在 土拨鼠日 之前发布一个测试版,这样你就不必再忍受六周未修复的错误的阴影了。

你可以从 jQuery CDN 获取代码

哦,我们知道你在想什么:“太棒了,jQuery 的新版本;我会等到最终版本发布几周后再尝试。”没错,然后你就会发现一些让你无法升级的错误。没有什么比我们发布完一个版本后,才看到有人报告一个本来可以更早修复的严重错误更让人难过。

所以请你走出你的洞穴,用你的代码试用这个测试版。我们是否遗漏了旧的错误?我们是否创建了新的错误,让你感觉像 比尔·默瑞醒来时听到“我拥有你”的感觉吗? 我们想知道。你可以使用 错误跟踪器 报告错误;请务必在 jsFiddle 上创建一个测试用例,以便我们能够轻松地找出问题。如果你不确定是否为错误,请咨询我们的 论坛StackOverflow

jQuery 1.7.2b1 变更日志

以下是 1.7.2b1 版本的当前变更日志。

Ajax

  • #10978: jQuery.param() 应允许非原生构造的对象作为属性值

属性

  • #5571: 在 jQuery 中将 undefined 传递给任何设置器时允许链式调用

构建

  • #10692: 配置 jshint 选项以更准确地匹配风格指南
  • #10902: 能够在单元测试中测试 jQuery 的构建版本
  • #10931: 单元测试不应该需要互联网访问

核心

  • #10466: jQuery.param() 将包装的基本类型误认为深层对象

Css

  • #10639: outerWidth(true) 和 css(‘margin’) 在 Webkit 中返回 % 而不是 px
  • #10754: 让 jQuery.swap 返回回调的返回值,而不仅仅是执行它
  • #10782: 计算宽度不正确
  • #10796: IE7 中 $(‘#el’).css.(‘background-position’) 的错误
  • #10858: css.js 正则表达式不完整
  • #11119: curCSS 函数只需要 2 个参数

效果

  • #8498: 动画钩子
  • #10006: 当对文档片段调用时,方法 show 在所有浏览器中的行为不符合预期
  • #10848: 动画切换在某些原子边缘情况下会丢失状态跟踪

事件

  • #8165: .live(‘click’, handler) 在 Chrome 中针对带有子元素的禁用按钮触发
  • #10819: 消除“this.on.call(this, “
  • #10878: $(“select”).live(“change”, function(){ …在 jQuery 1.7 中的 IE8 中损坏
  • #10961: 在 IE6-9 中使用 jQuery 1.7.1 时,XRegExp 中的错误
  • #10970: .on() 选择器参数不适用于 :not(:first) 选择器
  • #10984: 无法关闭() 自定义事件 ($.event.special)
  • #11021: 悬停技巧会破坏名为“悬停”的命名空间
  • #11076: .clone(true) 会丢失委托过滤器
  • #11130: jQuery.fn.on: 使用 null 选择器绑定映射会忽略数据
  • #11145: $(document).on() 不适用于 name=”disabled”

操作

  • #9427: 将 undefined 传递给 .text() 不会触发设置器
  • #10753: 将 evalScript 函数内联到 manipulation.js 中,因为它只使用一次
  • #10864: 文档片段上的 text() 方法总是返回空字符串
  • #11055: 更新 HTML5 Shim 元素列表以支持最新的 html5shiv

杂项

  • #10952: .fired() 在 Callbacks 对象上标记为“once”时不起作用
  • #11257: 如果缺少 PHP,则测试套件中源文件的路径错误

支持

  • #11048: 支持测试会影响 IE6-9 中定位元素的布局

插件网站更新:旧的是新的

发布日期: 作者:

自从上周宣布插件网站不幸地消失后,我们收到了很多反馈,我想解决其中一些最主要的问题。

“你能将旧的备份提供给后人吗?”

可以。我们能做到——而且已经做到了。周末,我们恢复了最近的备份,原始网站现在位于 archive.plugins.jquery.com;你应该可以随意浏览其中的所有内容。我们还应用了最近的用户资料,所以如果你在过去一年中的任何时间在旧网站上拥有帐户,它仍然可以使用。但是,该网站已关闭新用户注册。如果你真的需要新帐户,请 与我本人联系,我可以为你解决这个问题。我们还设置了重定向,所以如果你在浏览中遇到指向 plugins.jquery.com 的任何链接,你(希望)会最终到达存档中的相应页面。

直接从 Wayback Machine 获取备份吧!

虽然互联网档案已缓存了比去年 10 月更新的內容版本,但我们没有足够的资源来手动在新的档案网站上重新创建丢失的帖子。如果您有帐户,您可以随意添加“新”或旧插件,或者更新现有插件,如果您愿意。但是,此档案不会被搜索引擎索引。

如果你这么讨厌 CMS,那 WordPress 是怎么回事呢?

我们正在进行全网络的重新设计,WordPress 在主题、搜索和为一组网站提供服务方面为我们提供了一套宝贵的工具。然而,我们的新座右铭是 **拉取请求,而不是密码**;我们正在以一种不需要在我们的 CMS 上创建帐户就能进行贡献的方式实施主题、文档、插件等。正如我在最初的帖子中概述的那样,插件提交过程只涉及向您的存储库添加一个 post-receive 钩子。如果发生类似的灾难,我们确保能够重放整个插件贡献历史并立即让网站恢复正常。我们的目标是利用我们认为有用的 WordPress 功能,而不会让它成为进入门槛或内容的规范仓库。如果您认为 WordPress 始终是个坏主意,无论如何,无论如何,您当然有权持有这种观点,但在此时,它对对话没有特别的益处。

Git(Hub) 很难

新的插件网站将充当插件的索引,每个插件页面上都有一个简单的“下载”按钮。您 **无需** 在 GitHub 上到处浏览以查找 jQuery 插件。如果您不知道 git 并且只想下载 jQuery 插件,则无需学习它。但是,如果您想提交插件,您将不得不使用某种源代码管理,至少可以在 git 中镜像它。这是有意为之:构建一个 jQuery 插件非常容易,但这并不意味着它一定适合公开使用。要求使用源代码管理和 `package.json` 是被动机制,有助于确保传播的插件是由达到合理基准的开发人员(而不是出售电池)编写的。我们只针对 GitHub 支持进行启动,但我们很乐意 添加对其他服务的支持。我们正在积极避免使用 GitHub 特定的功能,这些功能将迫使我们将网站永久地限制在 GithHub 用户。

这是一个阴谋!

有些人质疑我的帐户的真实性,考虑到时间和环境,这是可以理解的。但请相信我,在我花了一整天手动从目录中修剪垃圾邮件之后,我最后不想做的事情就是反过来给成千上万的人,包括我自己和我的同事,造成巨大的麻烦。我希望重新启动最后一个备份至少部分缓解了这些担忧。此外,我们从 GitHub 开始,仅仅因为它已经拥有非常广泛的用户群,而且自从我们转向 GitHub 来开发 jQuery Core、UI 和 Mobile 以来,它对我们来说一直非常积极。

再次感谢您在这次过渡期间的耐心等待。

jQuery 插件网站怎么了?

发布日期为 作者为

大约一周的时间,我们的插件存储库并没有托管数百个 jQuery 插件和数千个关于笔记本电脑电池的广告,而是提供了一个关于垃圾邮件和对某个“新提交流程”的暗示的非常可怜的信息。这件事发生得很突然,我们对所有受到影响的人感到抱歉。请允许我花几分钟解释一下发生了什么事,我们要去哪里以及它如何影响您。如果您时间紧张,这里是 简短版本

背景故事

A White Elephant 虽然您所知道的 并且喜爱 的插件网站在最初建立时是一个宝贵的工具,但它逐渐变成了项目的 白象。虽然像 GitHubnpm 这样的强大分发工具已经出现,但我们一直停留在一个老化的、以 CMS 为中心的范式中,这使开发人员和插件使用者都感到沮丧。许多人转向其他来源寻找和审查插件。此外,网站的原始实施者和维护者已经不再积极参与 jQuery 项目。虽然团队面临着关于可用性和普遍缺乏功能的持续投诉,但网站本身却面临着真正意义上的 (几种) 垃圾邮件轰炸。有标准的、关键字丰富的 SEO 垃圾邮件,但还有更阴险的东西:第三方通过批量发布未经文档记录的、无演示的插件,这些插件链接到付费下载网站,以获取附属收益。虽然这并没有被明确禁止,但它导致了用户糟糕且令人困惑的体验,并使网站给人一种一切都不正常的感觉。

精心制定的计划…

考虑到所有这些问题,团队开始为彻底改造制定要求。我们知道我们希望摆脱接受上传、提供下载以及在我们自己的服务器上规定插件“发布”流程的业务。由于我们的官方项目已经在 GitHub 上,我们知道我们希望利用他们已经为分发、版本控制和促进开放的协作开发而发明的许多轮子。另一个要求是为作者创建一个标准模式,以清楚地描述依赖项,例如插件支持的 jQuery 版本以及插件正常运行所需的其他插件和 CSS 资源。我们还希望引入一些质量控制,包括被动机制(如要求 GitHub 和分发清单文件)和主动机制(如用户评级)。最后,我们希望有一个干净的起点;由于对提交的要求更加严格,因此无法大量导入所有旧插件。我们在准备规范方面取得了很大进展,但由于缺乏资源和其他项目的数量,我们从未能够深入到实施阶段。毕竟,旧网站“有效!”

…经常出错

Throwing the baby out with the bathwater

随着垃圾邮件泛滥越来越严重,多个报告开始出现在 jQuery Core 错误跟踪器上,我至少想采取一些措施,擦掉我们脸上的垃圾邮件和鸡蛋。在获得对网站上的管理工具的最新权限后,我与 Drupal Views Bulk Operations 模块 合作,开始识别和删除垃圾邮件发送者及其帖子。一两天内,几乎 90% 的所谓“内容”从网站上消失了。在接下来的几天里,我一直继续监控情况,并在垃圾邮件出现时将其删除。不幸的是,我可能网撒得太开,把几条完美的鱼和洗澡水一起倒掉了。更不幸的是,在我开始这个过程之前,我没有备份数据库。在这一点上,您可能已经看到了这个故事的走向。在那一周的晚些时候,当我想删除四条垃圾邮件时,当我看到操作结果显示数据库中剩余的 10%——所有剩余的插件——都被删除了,我感到完全震惊。剩下的只是一个一年前的备份。当然,我意识到这是一个可怕的结果,我对此负全部责任。如果这能有所帮助,我非常乐意接受恨邮件和推特,谴责我做事不负责任、不专业或愚蠢。

在这一点上,我们只剩下两种选择。

  • 继续踢皮球:从旧备份中恢复,无论如何都会丢失大量数据,并让作者经历重新上传插件的艰苦过程,即使网站本来就应该完全弃用。
  • 利用这个明显的错误作为契机,沉下心来,与过去决裂,最终实现我们一直讨论的网站。

我们选择了后者。

基本原理

在过去几天里,我们已经开始将我们的计划转化为行动,建立一个由 GitHub 支持的基础设施。在新的网站上列出插件有两个要求
Success Kid is helping out as well

  • 一个有效的 package.json 文件
    我们遵循了 CommonJS npm 的先例,并创建了一个模式来指定 jQuery 插件的依赖项、传递和其他的元数据。虽然该格式与其他项目非常相似,但我们不得不进行一些小的调整,以适应一些特定于插件的细节。
  • 至少一个版本化的版本
    这意味着使用有效的语义版本号 (semver) 字符串对您的发布点进行 标记

我们已经将提交和维护流程简化为一个单一的、一次性步骤:向您的插件的 GitHub 存储库添加一个 post-receive 钩子。假设您的插件符合指南,将创建一个页面在插件网站上展示您的使用和下载信息。我们会跟踪您推送的新版本。

过渡期间

我们认识到,旧网站仍然是许多人,特别是 jQuery 新用户,经常使用的资源,他们只是重视中央浏览位置的存在,尽管它存在缺陷。虽然许多经验丰富的用户已经转到其他网站,或者依靠与可信作者的关系和口碑,但这需要时间来发展。在我们能够推出新系统之前,我们很乐意将您引导到几个其他目录和人员,他们可以帮助解决问题

如果您在搜索这些目录或任何其他目录时被引导回当前的 plugins.jquery.com 网站,通常快速搜索作者姓名和插件名称就可以找到托管该插件的另一个网站。此外,DailyJS 刚刚发布了关于替代方案的有用汇总,其中包含更多详细信息。

插件作者的下一步

如果您是希望确保您的插件在第一天(甚至更早)就可以使用的插件开发人员,您需要确保您的插件在 GitHub 上,然后您需要开始创建您的 package.json 文件,并确保您的版本已适当地标记。如果您还不熟悉 Git 和 GitHub,那么现在可能是您尝试一下并 开始 的好时机。如果您更喜欢其他 SCM 系统,您可以考虑从 svnhg 设置到 git 的镜像,或者其他项目托管网站,如 bitbucketgitorious。如果您没有将您的插件作为开源开发,或者您根本没有使用任何源代码管理,我们目前无法满足您的需求。

我如何提供帮助?

尽管该网站仍在建设中,您现在可以在 github.com/jquery/plugins.jquery.com/ 上跟踪进度,甚至设置自己的本地开发环境。我们仍在努力搭建一个公开的预发布环境。

虽然该网站本质上是“由”GitHub“提供支持”,但显然有很多活动部件在起作用。该网站实际上将从 WordPress 内部提供服务,WordPress 使用一个 node.js 工具填充索引插件的内容。仍然有很多问题需要解决,所以如果这个技术栈听起来是你想要加入的,请加入我们 仓库。我们将使用 GitHub Issues 来处理所有功能请求、错误和讨论。

虽然我们在构建 package.json 架构方面投入了大量的精力,但这仍然是一个活文档,如果您对为什么它是这样而有疑问或评论,请访问 这个 issue

勘误

在理想情况下,这种情况当然不会完全按照它发生的来发生。不幸的是,它确实发生了。我们希望您能接受我们对这种转变可能让您的工作变得更困难、给您带来一些您没有预料到的额外工作,或者只是让您感到反感的方式表示歉意。如果您能够原谅我们,请耐心等待我们,也许还可以伸出援助之手,我们相信我们能够为社区提供一个现代、实用的插件网站。

TL;DR

所以说了一大堆,以下是重点。

  • 我们一直计划用一个新的插件网站来替换原来的那个满是垃圾邮件的网站。
  • 在删除垃圾邮件的过程中,所有插件都被删除了,我们没有最新的备份。
  • 与其浪费精力让旧网站苟延残喘,我们决定断然割舍,并开始全力开发新网站。
  • 新网站由 GitHub 和一个 插件包清单 提供支持。
  • 旧网站上的插件永远不会自动导入到新网站中。
  • 仓库地址是 github.com/jquery/plugins.jquery.com
  • 我们非常抱歉,但也非常兴奋!

2012 年 jQuery 大会:英国 – 培训研讨会公布

发布日期: 作者:

我们很高兴地宣布今年的 英国大会 将举办 两场培训研讨会。培训将由 Doug NeinerRalph WhitbeckMike HostetlerappendTo 的成员负责。大会的普通门票现已售罄,但您可以购买大会/培训套餐,仍然可以参加大会。

appendTo

appendTo 将举办jQuery 入门jQuery Mobile 研讨会。研讨会将于 2012 年 2 月 9 日星期四在英国牛津的 Lady Margaret Hall 举行。

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 日在 Lady Margaret Hall 举行,而不是在 Saïd 商学院举行,大会将在那里举行。

征集 jQuery 1.8 的想法

发布日期: 作者:

我们准备迎接下一轮社区反馈,这次是针对 1.8 版本!这是您提出建议的机会,我们可以修复、添加、更改或删除 jQuery 中的东西,使其变得更好。

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

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

创建可配置的下载生成器

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

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

我们已经开始努力改进模块化,方法是消除 jQuery 内部不需要的依赖项;我们宣布的许多弃用功能将针对消除这些依赖项。通过打下这个基础,那些想要创建他们自己的更小的 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 8 仍然拥有相当大的台式机市场份额,并且必须得到支持,那么放弃对前两个版本的支持就不会带来真正的尺寸或复杂性优势。没有人(包括微软本身)喜欢这些侏罗纪公园浏览器,但是现在就剥夺对它们的 supports将使许多用户的网站崩溃。

也就是说,我们知道在某些情况下(例如移动浏览器),不需要支持旧版 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 核心团队成员 Mike Sherov!我们很感谢他对我们为即将发布的版本计划的所有伟大事情的帮助。Mike 在纽约市的 SNAP Interactive 有全职工作,但在业余时间为项目做出贡献。请“成为像迈克一样的人”,尽你所能帮助项目。它不必是编码。我们总是需要帮助来回答论坛上的问题,或者仅仅是重现和识别在错误追踪器上报告的模糊错误的来源。查看我们的 参与 页面以获取信息。

我们将在一天或两天内开放 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”会导致停止时出现错误

事件

  • #10676: wheelDelta 不再添加到鼠标滚轮事件
  • #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() 在提交时不起作用

操作

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

杂项

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

支持

  • #10629: IE 对假体过于敏感。探索清理 support.js 以避免将来出现任何崩溃。
  • #10807: 注释中的非 ASCII 撇号

厌倦了 jQuery

发布时间: 作者:

TL;DR 负责监督 jQuery 的财务和管理工作的机构,以前被称为 jQuery 团队,现在被称为 jQuery 委员会。jQuery 团队是为任何投入大量时间为 jQuery 及其相关项目做出贡献的人而设立的。

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

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

  • 一方面,有投票成员,他们主要负责整个项目的财务和管理决策。另一方面,有一个实际的人群,他们正在开发 jQuery Core 本身。这两个群体有时都被称为 jQuery 核心团队,这很具有误导性。
  • 随着新人的加入并成为项目某一部分的积极贡献者,告诉他们“嘿,干得不错,但你不在团队中!”并不有趣。
  • 仅仅因为你非常有兴趣破解 jQuery Core、UI 或 Mobile(或者编写文档,或者通过其他许多方式帮助项目),并不意味着你最想做的就是参加漫长的会议,讨论如何分配资金以及如何改善下次会议的饮料服务。
  • 随着人们生活的起伏,他们的贡献能力也会发生变化。现在,在项目的大局管理中,积极贡献者与投票者之间应该存在怎样的关联?

为了尝试解决这些混乱并明确该组织的宗旨,jQuery 团队现在被称为 jQuery 委员会,适用于该团队的所有治理规则现在也适用于该委员会。该委员会负责

  • 批准和拨付开支
  • 代表 jQuery 项目的意图向 SFC
  • 监督和指导小组,并选择负责项目各个方面的小组负责人
  • 对自己的构成进行投票

如果您一直想“加入团队”,但不确定这意味着什么或您会做什么,那么这是一个好消息!我们完全接受 维基百科对团队的定义:一群为了共同目标而团结在一起的人(或动物!)。因此,任何长期自愿为 jQuery 小组积极服务的人都会被邀请加入 jQuery 团队(由小组负责人自行决定),因此您可以放心地在幻灯片、冰箱等等上贴上这句话。

没有改变的是,如果您对网络开发充满热情,并且想要找到一种方法为全世界的开发人员做出贡献,那么您在 jQuery 社区中拥有一个位置。跳到 论坛 上,帮助其他开发人员。转到我们的 各种 错误 追踪器 上,帮助对开放问题进行分类——或者 深入研究并看看您是否可以提供补丁。如果您只想了解一下,请加入 每周 IRC 会议。想参与某个特定项目吗?查看 更新后的团队页面,并与相关小组负责人取得联系!有一点是肯定的

jQuery wants you!

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 私有数据应保持私有

延迟

  • #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 中更改处理程序内的 stopPropagation 错误地应用于 keydown 事件
  • #6386: 通过“event.special.live.add”支持实时事件的数据参数
  • #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: 使用“Enter”而不是按钮点击提交表单在 ie8 或 ie7 中会触发实时 submit 事件两次。
  • #8157: 聚焦已聚焦的文本字段将阻止 change 事件在 IE 中触发
  • #8728: 离开元素被删除时,事件“mouseenter”不会触发
  • #8789: 元数据:事件属性钩子
  • #8858: 特殊事件 - _default 方法无法访问触发方法的“data”参数
  • #8866: IE8 input[type=file] 委托的 change 事件仅在 blur 时触发
  • #8982: bind(“unload someOther”) => 在卸载时,处理程序不会仅执行一次。
  • #9069: 当悬停在元素的子元素上时,使用 live 或 delegate 时,mouseleave 会触发
  • #9279: delegate() 绑定对于选定元素的 mouseover/mouseout 和 mouseenter/mouseout 处理不正确
  • #9393: 统一并 DRY 事件系统
  • #9593: 委托的 submit 事件在 IE 中不是 jQuery.Event 的实例
  • #9724: 当 window.parentNode 是 DOM 元素时,触发函数中出现无限循环
  • #9901: 使用 .delegate 时,event.handleObj.namespace 不正确
  • #9933: jQuery.fn.toggle() 应在私有数据对象中存储状态
  • #9951: 当 DOM 在处理程序中被修改时,.trigger() 中的顺序错误
  • #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 之间的实时事件传播中的重大更改
  • #10576: jQuery1.7rc1 和 jQueryMobile1.0rc2 - IE 在 jqm triggerCustomEvent 方法中出现错误

操作

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

杂项

  • #10420: 鼠标滚轮
  • #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”) >> 未捕获的类型错误:无法调用未定义的“toLowerCase”方法
  • #10315: Sizzle 在使用位置选择器时忽略种子参数
  • #10562: siblings 方法在使用 Sizzle 调用的伪选择器时返回意外元素

支持

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

遍历

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