jQuery 1.8 Beta 2 发布

发布日期: 作者:

jQuery 中心最近几周真是忙得不可开交,先是发布了 Beta 1,紧接着就是旧金山 jQuery 大会。不用担心!在奔波于旅行、会议、各种会谈和关于 jQuery 未来的博客文章之间,我们实际上还写了一些代码。作为证明,我们在此发布 jQuery 1.8 Beta 2

https://code.jqueryjs.cn/jquery-1.8b2.js

这是程序中一个关键部分,我们呼吁您,jQuery 社区,帮助我们完成这项工作。请使用 Beta 2 在旧浏览器、新浏览器、红色浏览器和蓝色浏览器中进行测试。(分别对应 IE6、Chrome Canary、Opera 和 Internet Explorer。)请用您所有的代码测试此文件,并确保在所有模式下都进行全面测试。Beta 2 中是否有功能出现故障?请在发布正式版之前告诉我们!

在您帮助测试 Beta 1 的过程中,我们发现了一些 bug 并进行了修复。我们再次强调,在您使用这些 beta 版本测试时,您的反馈对我们至关重要。我们不希望发布最终版本后,您将它们应用到网页中时出现问题,而避免此问题的方法是在测试 beta 版本时及时向我们反馈问题。

注意: 此版本需要与 jQuery UI 协调修复一些问题。因此,使用 jQuery UI 的页面需要包含最新版本的 UI master 版本以测试 jQuery 1.8b2。您可以从这里获取:https://code.jqueryjs.cn/ui/jquery-ui-git.js。jQuery UI 1.8 将发布一个维护版本,其中包含对 jQuery core 1.8 的支持,但鼓励用户在发布后更新到 jQuery UI 1.9。

如果您发现问题,请尝试将其简化为简单的测试用例。jsFiddle 是我们首选的获取测试用例的方式,因为它允许我们调整测试用例、诊断问题并探索解决方案。(为框架选择 jQuery (edge),即最新代码。)有了测试用例后,请访问 bug 跟踪器 告知我们问题。谢谢!

除了 Beta 1 中报告的 bug 修复外,此新 beta 版还对 Sizzle 引擎进行了 重大重写,以获得更好的性能。它修复了与 IE 6、7 和 8 相关的大量 bug,并使这些浏览器更一致地使用。与旧版 IE 的完美兼容永远是一个难以捉摸的目标,但我们仍在努力让您的开发过程尽可能轻松,无论使用何种浏览器。

如果您按照 Github 上 README 文件 中的说明构建了自己的自定义版本,您现在可以选择省略将在未来版本中删除的某些弃用功能。我们将随着对更多弃用功能的识别而继续更新此文件。

以下是自 jQuery 1.7.2 以来的所有更改。

jQuery 1.8b2 更改日志

1.8b2 版本的当前更改日志。

Ajax

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

属性

  • #5571:允许在将 undefined 传递给 jQuery 中的任何 setter 时进行链式调用
  • #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') 时出现 bug
  • #10858:css.js 正则表达式不完整
  • #11119:curCSS 函数只需要 2 个参数

数据

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

Deferred

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

效果

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

事件

  • #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:悬停黑客会破坏名为“hover”的命名空间
  • #11076:.clone(true) 会丢失委托过滤器
  • #11130:jQuery.fn.on:使用 null 选择器进行绑定映射会忽略数据
  • #11145:$(document).on() 在使用 name="disabled" 时不起作用

操作

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

其他

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

队列

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

支持

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

遍历

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

新的 Sizzle

发布日期: 作者:

为了让您的 7 月 4 日更加“sizzlin’”(欢迎使用),jQuery 团队很高兴地宣布,Sizzle,jQuery 的 CSS 选择器引擎,比以往任何时候都更好、更快、更可靠!Sizzle 经过了彻底的重写,将包含在 jQuery 1.8 版本中。

首先,要感谢 Diego Perini 指引我走向正确的方向,还要感谢 Samuel Lebeau 在 3 年前创建了一个名为 Bouncer 的项目,这是一个“用于 JavaScript 的快速自下而上的元素匹配器”。

jQuery 以及 Sizzle 在 2006 年发布,大约是在 Simon Willison 发布 getElementsBySelector 3 年后,该项目基本上为我们今天拥有的所有选择器引擎奠定了基础。随着时间的推移,Sizzle 为了性能而被重写了几次,并且随着使用人数的增加,越来越多的 bug 被修复。

在此期间,其他一些非常优秀的选择器引擎也出现了,包括但不限于 NWMatcher(由 Diego 编写)、dojo.query、Slick、base2、qwery 和 YUI。尽管它们都各有优势,但 NWMatcher 和 Dojo 尤其突出,堪称典范引擎。虽然它们都不是在所有选择操作中速度最快,但它们在几乎所有选择器上的速度都始终如一地快。我的目标是让 Sizzle 达到同样的性能水平,保留 John 和 bug 团队多年来积累的所有边缘情况 bug 修复,并涵盖更多排队中的 bug 或其他引擎已涵盖的 bug。现在我可以放心地说,这个目标已经实现了。

虽然我不会说 Sizzle 绝对没有 bug 或在所有情况下都速度最快,但它的可靠性和 性能提升 非常有竞争力。http://jsfiddle.net/timmywil/s7rN4/ 是一个简单的测试,用于快速观察一些选择器引擎在几种选择器上的差异(应该在打开控制台的浏览器中运行)。

发生了什么变化

以下是 jQuery 1.7.2 中的 Sizzle 与 jQuery 1.8 中的 Sizzle 的主要代码差异缩减列表。

一个编译后的选择器函数

选择器解析器将选择器编译成一个包含每个选择器部分的函数的函数。这意味着对于任何给定的选择器(不包括位置选择器(POS)选择器,如 :first:eq(3)),只需要检查元素的可能集合一次。这主要是在 速度提升 和提高稳定性的地方。

此外,Sizzle 会维护最近编译函数的缓存。缓存的大小有限制(可以调整,但有默认值),因此在使用许多不同的选择器时不会出现内存不足错误。

注意:这不会影响简单选择器(仅 ID、仅 TAG、仅 CLASS),因为 Sizzle 对这些选择器有快捷方式,会在可能的情况下使用 getElementByIDgetElementsByTagNamegetElementsByClassName。这一点没有改变(除了为元素根 ID 选择器添加了一个快捷方式),而且这些选择器仍然是最快的选择器。任何其他选择器都将通过 querySelectorAll(如果可用)或运行编译器。

querySelectorAllmatchesSelector

通过这次最新的重写,querySelectorAllmatchesSelector 的代码路径比以前更好,并且性能出色。

有些人问为什么我们还需要 Sizzle,因为现代浏览器有 querySelectorAllmatchesSelector,并且接受各种 CSS3 选择器。问题是每个浏览器(不仅仅是 IE)在这些方法中都有一些 bug。选择器引擎必须事先知道这些 bug,并在它们返回不正确的结果之前绕过这些方法(尽管并非所有引擎都这样做)。Sizzle 现在已经涵盖了这一点。

此外,querySelectorAllmatchesSelector 不知道如何处理 jQuery 选择器扩展,例如 [attr!=value]。任何时候使用选择器扩展,Sizzle 都需要本地处理选择操作。

改进的选择器验证

验证选择器是一件很棘手的事情。过于严格会令人讨厌,但过于灵活会导致意外结果。过去,Sizzle 在不同的用例中同时具有这两种特性。最近的变化旨在尽可能地遵守 W3C 选择器规范,但也允许一些规范中没有的东西(例如在 :not() 伪类中包含复杂的选择器)。

具体来说,我们正在匹配所有必要的空格字符,包括换行符、制表符、回车符和换页符(http://www.w3.org/TR/selectors/#whitespace),验证属性选择器中的标识符和运算符(http://www.w3.org/TR/selectors/#attribute-selectors),并提供与规范匹配的字符编码(http://www.w3.org/TR/css3-syntax/#characters)。

组合器(空格、~、>、+)

组合器可能非常复杂,但新策略可以从容地处理它们。在 jQuery 1.8 beta 版发布时(以及今年的 jQuery 大会上),我声称 Sizzle 对组合器的支持有所改善。虽然准确性有所提高,但我言过其实了,幸运的是,这一点被我在 github 上只知道叫 Yaffle 的人指出了。显然,对于非常大且很深的文档,原始版本检查了太多元素,导致具有多个组合器的选择器出现堆栈溢出。对于每个组合器,检查的元素数量呈指数级增长,以维护可能的匹配项。这是不好的。Sizzle 现在解决了这个问题,并得到了令人满意的结果。

可扩展性

虽然这次重写没有改变 Sizzle 的大部分旧 API(除了从私有 API 中删除现在不再需要的 Sizzle.filter),但有一些变化使 Sizzle 更加可扩展。扩展 Sizzle 的最常见方法是添加自定义伪选择器。现在,解析器编译了一个函数的函数,您可以在创建自定义选择器时获得更多信息。例如,在 Sizzle 内部,:not 伪选择器的实现与以下代码非常相似

// Using the createPseudo function tells the compiler
//   to pass the pseudo argument, context, and whether the current context is xml
//   to the function passed to createPseudo and trusts
//   that a function to be used for filtering will be returned.
// Note: the use of createPseudo is only necessary for creating custom
//   pseudo selectors with arguments.
Sizzle.selectors.pseudos.not =
    Sizzle.selectors.createPseudo(function( selector, context, isXml ) {
        var matcher = Sizzle.compile( selector, context, isXml );
	return function( elem ) {
		return !matcher( elem );
	};
    });

这是公共 API 中唯一一个由于新解析器造成的重大变化,但我认为现在使用参数创建自定义伪选择器要干净得多。有关更多信息,请参阅 Sizzle 文档

也许有些人会认为,预编译自己的选择器会很好。当然可以。Sizzle.compile 是公开的,因此您可以缓存选择器,然后再使用它们。虽然编译仍然非常快,不需要缓存,但您可以确保在执行选择之前跳过这一步。使用选择器和上下文调用 compile

Sizzle.compile(“my>long>complicated:selector(poof)”, document);

将其添加到缓存中。您甚至可以通过设置 Sizzle.selectors.cacheLength 来增加/减少缓存的大小。

注意:大多数用户不需要使用编译器,因为 Sizzle 会维护最近编译的选择器缓存。覆盖 Sizzle.compile 不会对 Sizzle 产生任何影响,因为它维护了对该方法的内部引用。

获取代码!

该代码现在可以在 jQuerySizzle 的 git 版本中获得。预计 jQuery 1.8 将在本月某个时候发布。专门针对 Sizzle 的问题可以在 GitHub 上提交,并且像往常一样,任何与 jQuery 相关的问题都可以在我们的 bug 跟踪器 上提交。自己试一试,如果遇到任何问题,请告诉我们。祝您使用愉快,并祝独立日快乐!

jQuery 1.9 和 2.0 - TL;DR 版本

发布日期为 作者

似乎许多人对 上一篇文章 有疑问和误解,所以让我们尝试用简短的问答形式来回答一些在那里留下的评论。

为什么 jQuery 核心团队要放弃对旧 IE(IE 6/7/8)的支持?我们没有!jQuery 1.9 在明年发布时将支持旧 IE。即使 jQuery 2.0 发布后,jQuery 团队也将继续支持和维护 1.9 版。

为什么你们让我使用条件注释来包含 jQuery?我们没有!您可以将 jQuery 1.9 用于我们支持的所有浏览器,从 IE6 一直到 Chrome、Safari、Opera 或 Internet Explorer 的最新版本。

当 jQuery 2.1 发布并添加 API 时,jQuery 1.9 会支持它们吗?你能借用你的水晶球吗?jQuery 2.1 可能要到 2014 年才会发布,所以很难说 2012 年中旬我们坐在那里的时候,jQuery 2.1 会是什么样子。我们的总体目标是让 1.x 和 2.x 线路保持同步,并通过插件添加功能;请参见 上周大会上的主题演讲

您将支持 jQuery 1.9 多长时间?只要旧 IE 在网络上仍然是一个重要因素。1.x 线路甚至有可能发布更多版本,但我们还没有收到上一问题中请求的水晶球。但是,当微软在 2014 年 4 月停止对 Windows XP 的支持时,旧 IE 的安装基数将受到很大影响。

我还有很多 IE8 用户,你不能只删除 IE6 和 IE7 吗?旧 IE 浏览器有很多相同的缺陷,因此,除了在 jQuery 2.0 中删除所有这三个浏览器之外,没有其他方法可以解决这个问题。如果您需要任何类型的旧 IE 支持,支持的 jQuery 1.9 将始终存在。

我的网站在中国,我们有 22% 的用户仍在使用 IE6!这似乎是一种侵犯人权的行为。哦,那不是一个问题。

jQuery 核心:1.9 版及以后

发布日期为 作者

在得出错误结论之前,请查看 后续文章

正如上一篇博文中所讨论的,jQuery 1.8 版正在进行春季大扫除,以删除不安全、效率低下、无效和不可取的特性。我们也开始着手工作,允许您构建自定义版本,排除库中的某些部分,以实现更大的节省。这些努力将使您能够享用所需的 jQuery API,而无需携带不需要的部分。

现在我们已经完成了大扫除,是时候展望未来了。只有一件事阻碍了我们对未来的愿景,那就是过去浏览器的幽灵。Internet Explorer 6、7 和 8(统称为旧 IE)十年来一直是 Web 开发人员心头的刺。总的来说,这些已经成为过去时代的浏览器仍然占访问某些网站的用户总数的三分之一。这可是很多用户——他们仍然想要网站提供的资讯、服务和产品。对于许多使用 jQuery 的网站来说,忽视这些用户既不现实也不合算。

jQuery 的设计初衷就是为了解决浏览器之间的差异,因此我们不会放弃我们理念的精髓,也不会简单地无视数百万仍然使用旧 IE 的活跃 Internet 用户(无论出于何种原因)。但是,我们也希望继续前进,利用现代浏览器,尤其是不断增长的移动市场。

前进的道路

jQuery 1.8 预计将在一个月内发布。以下是我们对接下来的两个 jQuery 版本的计划,以及它们的发布时间。

  • jQuery 1.9(2013 年初):我们将删除 1.8 版本中已弃用的许多接口;其中一些将作为插件或 jQuery 项目支持的替代 API 提供。
  • jQuery 1.9.x(2013 年及以后持续进行):此版本将继续修复任何回归问题、新浏览器错误等。
  • jQuery 2.0(2013 年初,紧随 1.9 之后):此版本将支持与 jQuery 1.9 相同的 API,但将删除对 IE 6/7/8 特性(如事件模型错误、IE7“attroperties”、HTML5 垫片等)的支持。

我们的目标是让 1.9 和 2.0 在它们支持的 API 集方面可以互换使用。当 2.0 发布时,您选择哪个版本的决定应该很简单:如果您需要 IE 6/7/8 支持,请选择 1.9;否则,您可以使用 1.9 或 2.0。

问答

如果 jQuery 1.9 和 2.0 基本上是相同的 API,那么是什么让 2.0 更有吸引力?更小的体积,更好的性能,以及没有为旧 IE 支持带来的问题。例如,我们预计可以在 2.0 中改进 $.Deferred 实现中的错误处理,而只要支持旧 IE,我们就无法做到这一点。

我的网站仍然有许多 IE7/8 访问者,但我希望使用 jQuery 2.0。我该怎么做?如果您的网站需要旧 IE 支持,我们预计大多数网站至少还需要一两年,您可以使用 IE 条件注释仅在访问者使用旧 IE 时才包含 1.9 版本。

<!--[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 创建一个“旧 IE 插件”?对旧 IE 的特殊照顾散布在整个 jQuery 中。重构代码以提供足够的挂钩,以便旧 IE 支持可以作为插件添加,会使现代浏览器情况下的代码变得复杂。此外,支持旧 IE 并使用公共 CDN 的开发人员将需要包含两个文件(jQuery 2.0 和旧 IE 插件),而不是一个。

jQuery 2.0 发布后,1.9 会怎样?与以往不同的是,我们将继续修复 1.9 中的错误(作为次要版本)。由于我们刚刚完成了 1.8 和 1.9 的春季大扫除,我们预计将来不会添加很多新的 API。相反,我们更愿意通过与这两个版本兼容的插件来添加新功能,只要这样做有意义。因此,当使用 1.9 版本时,不要觉得您落伍了。

jQuery 2.0 基本上是针对移动设备的吗?不。虽然 jQuery 2.0 将非常适合 HTML 移动应用程序,包括使用 jQuery Mobile 编写的应用程序,但它不是一个仅限于 Webkit 的库,只针对 iOS 和 Android。除了移动浏览器之外,2.0 还将支持(并经过测试!)现代桌面版本的 Internet Explorer、Opera、Firefox、Safari 和 Chrome。

jQuery 2.0 会小多少/快多少?在我们完成之前,或者至少接近完成之前,我们还不知道。您可以肯定的是,我们会随着 2.0 发布日期的临近而告诉您更多信息。更好的是,您可以尝试发布的测试版,并亲身体验!

jQuery 1.8 Beta 1:查看即将发布的内容(以及即将消失的内容!)

发表于 作者

各位 jQuery 用户大家好!自从您上次收到我们的消息已经有一段时间了,但我们并没有睡着。jQuery 核心团队一直埋头工作,开发 jQuery 1.8,现在我们的第一个测试版已经发布!您可以在 jQuery CDN 上获取代码

在您的当前 jQuery 代码上试用它,并告诉我们它的运行情况。如果您遇到问题,请提交错误报告,包括一个测试用例,并确保您提到了您正在针对 jQuery 1.8 Beta 1 进行测试。

本月晚些时候在旧金山举行的jQuery 大会上将会有更多激动人心的 jQuery 消息,随后会有博文发布。

jQuery 现在为互联网上大约一半的主要网站提供支持;这是一个巨大的成功,但我们并没有止步不前。在过去的六年里,网络浏览器和它们运行的设备经历了惊人的蜕变。Web 开发的过程正在不断演变,以适应正在发生的改变。作为回应,jQuery 也在不断发展。

这种演变的一部分不仅仅是知道要添加什么,还要知道要删除什么。jQuery 的插件架构使开发人员可以轻松地扩展 jQuery 核心提供的功能,只要这对于他们自己的需求有意义。因此,为核心添加内容的门槛设置得相当高。我们不想为那些不需要特定功能的人创建大小、复杂度或性能方面的惩罚。

同样地,我们有足够的经验来了解人们使用 jQuery 的方式,知道一些最初看起来像是好主意但在事实证明并不那么好的功能。与其永远保留这些功能,我们希望最终将其删除。事实上,我们希望能够更容易地创建一个 jQuery 版本,该版本排除了您不需要或不想要的东西,特别是对于空间宝贵的移动环境。

考虑到这一点,以下是一些我们计划在 jQuery 1.8 中进行的更改,这些更改将使其成为所有基于 HTML 的网页和应用程序(无论其平台如何)的更好的基础

模块化

从 jQuery 1.8 开始,您可以构建一个自定义版本的 jQuery,该版本可以排除一个或多个模块,如果您不需要它们的功能。此功能由我们新的基于 Ben Alman 的出色grunt 工具的构建系统提供。要构建自己的自定义版本,请从 Github 设置一个 jQuery 核心仓库的副本,并使用 grunt 命令行选项来排除模块。有关更多信息,请参见README 文件

您目前可以排除的模块是 ajax、css、dimensions、effects 和 offset。例如,如果您的应用程序专门使用样式表和通过类进行的 CSS 动画来控制页面上项目的可见性和大小,那么您可以构建一个不包含 css、dimensions、effects 和 offset 模块的版本。如果您不需要任何可选模块,则您的自定义 jQuery 构建版本将大约为 21KB(缩小并 gzip 压缩)。

不过不用担心,构建您自己的 jQuery 并非强制性的。jQuery 一直都是,并将继续以压缩和未压缩形式作为单个文件进行分发,并可在 CDN 上获得。我们仍然预计这将是大多数 jQuery 开发人员使用的方式,因为它简单且轻松。例如,当您包含一个您没有编写的 jQuery 插件时,使用完整的 jQuery 可以确保您不会被插件内部潜藏的某些依赖关系所困扰。

供应商前缀 CSS 属性

当 W3C 提出为尚未标准化的 CSS 特性使用供应商前缀的想法时,其初衷是好的,但结果却并非如愿。Web 开发人员面临着在样式表中包含所有供应商前缀属性名称的噩梦。jQuery 1.8 稍微减轻了这种痛苦。我们会自动获取非前缀属性名称,并生成适合当前浏览器的前缀,因此您无需手动进行。例如,在 Chrome 中,jQuery 调用 $("#myscroll").css("marquee-direction", "backwards") 将将 CSS 设置为 -webkit-marquee-direction: backwards

动画(效果)

在过去的几年里,我们的动画代码已经变得杂乱无章,在 1.8 中,我们希望我们已经控制住了这个怪物。但这不仅仅是清理,它还包含几个扩展点,使得添加或修改动画变得更容易。目前,针对新功能的文档还处于初步阶段,但在第一个测试版中,我们的主要重点将是确保任何现有的动画代码都能正常工作。

如今,浏览器在提供高效的动画方面做得越来越好,特别是使用 CSS 过渡。然而,仍然有相当一部分用户使用的浏览器无法执行基于 CSS 的动画。使用 jQuery 1.8,您可以同时获得两全其美。如果您需要支持没有内置动画的旧浏览器,新的 $.Animation 提供了一个坚实的基础并修复了先前版本中的许多错误。如果您只需要针对现代浏览器及其原生支持的动画,那么您可以这样做,并完全排除动画模块。

Sizzle CSS 选择器引擎

jQuery 的选择器引擎在 1.8 中进行了重大重写。此重写最显著的优势是选择器匹配的广泛性能提升,以及对最常用选择器的改进快捷方式。

此外,Sizzle 处理了许多边缘情况和错误,包括对多个组合器(~ > +)的改进支持,以及对 querySelectorAll 中浏览器错误的更好检测。有关完整列表,请参见选择器模块中的错误列表。

XSS 防护

根据设计,$() 方法可以创建 HTML 元素,并且如果传递给它的 <script> 标签包含内联脚本或 src 属性,它将运行脚本。开发人员有时会忘记这一点,将来自不可信来源(如 URL 或用户输入)的字符串传递给 jQuery。在这些情况下,有人可能会将脚本注入页面,从而窃取 cookie 或以某种方式危害页面。

这些跨站点脚本 (XSS) 攻击在许多网站上都很常见,无论它们是否使用 jQuery,但我们希望确保 jQuery 不会加剧这个问题。在 jQuery 1.9(1.8 之后的下一个版本)中,我们正在收紧 $() 方法的“看起来像 HTML”规则。只有当第一个字符是小于号时,字符串才会被认为是 HTML,否则它将被假定为 CSS 选择器。

为了进一步防止无意中注入脚本,jQuery 1.8 引入了一种新方法:$.parseHTML。它允许您将字符串指定为 HTML,并确保它们将被解析为 HTML,这是 $() 无法做到的,因为它还会将字符串解释为选择器。它还提供了一种将 HTML 解析为 DOM 片段并控制 HTML 可能包含的任何脚本执行的方法。这在由内容安全策略 (CSP) 控制的 JavaScript 环境中尤其重要,因为注入的脚本可能会导致安全警告或异常。

对于创建单个元素(例如 $("<p/>"))以外的任何情况,特别是对于从外部数据构建字符串的情况,我们强烈建议使用 $.parseHTML。从 jQuery 1.9 开始,由于这些更严格的规则,某些 HTML 字符串将不再被 $() 识别。

春季大扫除

在 jQuery 1.8 中,我们也将过时并移除一些“绊脚石”:那些效率低下、效果不佳或不可取的 API 和特性。我们意识到,仍有一些现有的 jQuery 代码需要这些特性。为了提供一个低门槛的未来升级路径,我们在移除这些特性后,将把它们中的许多放在一个兼容性插件中。你可以关注这个插件在它的 GitHub 仓库 上的开发过程。

以下以“过时”或“移除”开头的条目,详细说明了所有的变化,但以下是一些值得注意的改动。

$.browser: 自 jQuery 1.4 以来,我们一直在宣扬通过用户代理字符串进行浏览器检测是一个糟糕的做法。然而,我们一直通过继续提供 $.browser 来助长这种不良做法。从 jQuery 1.9 开始,我们将完全移除它,你需要使用 1.9 兼容性插件。如果你的代码还没有摆脱浏览器检测,可以看看 Modernizr,它提供了一套非常完整的特性检测,你可以用它来代替。当然,你也可以直接读取 navigator.userAgent 字符串中的信息,没有任何东西可以阻止你,除了你的良心。

$.sub: 此方法在 jQuery 1.5 中引入,但没有证明它足够有用或健壮,不足以继续留在核心库中。它将在 jQuery 1.9 中移至兼容性插件。

全局 AJAX 事件:ajaxStart 这样的事件由 $.ajax 触发,当前可以附加到任何元素 - 甚至那些不在文档中的元素!这会创建一种低效的特殊情况,因此我们将在 1.8 中过时该行为。从 1.9 开始,AJAX 事件应该仅附加到 document 上。

还有更多…

1.8 中还有许多其他变化,或许最简单的方法是查看正在修复的问题列表,其中包括功能和错误修复。以下是 1.8 的最新快照,但它并非一成不变。我们欢迎你对具体问题或 jQuery 的整体方向提出反馈!

jQuery 1.8 Beta 1 更改日志

这是 1.8 Beta 1 版本的当前更改日志。

Ajax

  • #8205: JSONP 随机结果导致 IE8 中出现内存泄漏
  • #8653: jQuery.param 在查询字符串中输出“null”和“undefined”
  • #10285: evalScript rcleanScript 替换在 IE8 中失败
  • #10524: jQuery.fn.load 不会将 data 参数与 jQuery.ajaxSetup 合并
  • #10944: $.ajax 并不总是返回一个实现了 Promise 接口的对象
  • #11013: 过时/移除 $.ajax 中的 async 选项
  • #11402: evalScript 函数在 IE 中出现错误 80020101
  • #11743: jQuery 在 $.appendTo() 中的 script 标签 AJAX 请求期间静默忽略错误
  • #11778: 缓存的 XHR 请求仍然应该异步解析

属性

  • #11153: jQuery 1.7 在 IE 8 中删除回车符
  • #11212: Sizzle.getText 在 IE 上将不可分割的空格转换为空白

构建

  • #11767: 支持没有效果的自定义构建
  • #11789: 更新 README 以描述 grunt 构建系统
  • #11856: 模块化尺寸
  • #11857: 模块化 CSS
  • #11865: 模块化偏移

核心

  • #10657: 过时/移除 jQuery#size(),改用 jQuery#length
  • #11290: 选择器被解释为 HTML
  • #11470: 添加内置的 readyP promise

CSS

  • #10373: document.defaultView => window
  • #10413: 当隐藏父元素的“box-sizing: border-box”子元素时,width、innerWidth、innerHeight、outerWidth、outerHeight 不准确
  • #10679: CSS3 供应商前缀支持
  • #11004: 当 box-sizing 为 border-box 时,getWH 错误地删除了填充和边框宽度
  • #11787: 移除 jQuery.curCSS

数据

  • #10589: 移除 $.fn.data("events")

Deferred

  • #11010: 使 Deferred.then == Deferred.pipe 像 Promise/A
  • #11011: 允许为 $.Callbacks 标志使用传统的选项对象
  • #11736: 移除 Deferred .isResolved() 和 .isRejected()
  • #11749: 当多个 Deferred 对象传递给 $.when() 时,保留上下文对象

尺寸

  • #6724: 移动版 Safari (iPhone) 中的 $(window).height() 错误
  • #10877: 使 outerWidth/Height 成为 setter
  • #11293: 读取空的 TD 的 width 或 outerWidth 会改变列的宽度值
  • #11604: 将 $(elem).width(-val) 从无操作更改为 $(elem).width(0)
  • #11724: Firefox 12 中 $(document).height() 发生改变

效果

  • #7109: 在 WebKit 中,animate width 从无效宽度开始
  • #7157: 动画回调显示元素仍然是“:animated”
  • #8387: jQuery 1.5 中,在 WebKit 浏览器上,使用内联和内联块元素进行 hide/show 操作时出现闪烁问题
  • #8627: .animate() 在 IE 上的 letterSpacing 失败(1.5.1 中的回归)
  • #8892: 当 jQuery.fx.off = true 时,在使用 fadeIn() 显示对象之前,回调被触发
  • #9505: 在 WebKit 中混合使用百分比和像素时,animate() 出现问题
  • #11635: 显式的 overflow:auto 在动画期间被内联的 overflow:hidden 覆盖
  • #11755: animate 及其别名不应该使用 :hidden 选择器
  • #11854: 百分比动画跳到结尾

事件

  • #8545: IE 中事件泄漏
  • #10067: 在 document.readyState === 'interactive' 时,也触发 $.ready
  • #11101: 过时移除 trigger 方法中的“exclusive”事件选项
  • #11328: 在 Windows 上,Ctrl 键没有将 event.metaKey 设置为 true
  • #11500: 错误:“change”事件处理程序在 IE7 和 IE8 中手动触发时没有执行
  • #11621: 在 document 上触发事件不会冒泡到 window
  • #11718: 过时移除 .data() 事件
  • #11719: 过时移除 .bind("ready") 事件
  • #11731: 过时移除“hover”伪事件
  • #11733: 过时移除 .load()、.unload() 和 .error() 方法
  • #11786: 过时移除 .toggle( handler, handler, … ) 签名

操作

  • #8894: 在 IE 中,clone() 后调用 appendTo() 等方法会返回不正确的 jQuery 集合
  • #10324: 在 IE9 中,Clone 不会复制对象元素的 innerHTML
  • #11231: Append、Prepend、After、Before 应该接受数组作为第一个参数
  • #11338: .replaceWith() 和断开连接的节点的行为不一致。
  • #11566: 当节点是 DocumentFragment 时,node.append 等操作不起作用
  • #11617: 定义一个 $.parseHTML 方法来创建 HTML 片段

偏移

  • #10996: 简化 offset()
  • #11823: 移除 webkitConvertPointFromNodeToPage

选择器

  • #3778: 选择器匹配问题
  • #5568: 选择器在 FF/IE 上对注释标签的行为不同
  • #8473: 在 IE9rc 中,*[tabIndex] 选择所有没有 tabindex 的元素
  • #9400: 过时移除 :text、:radio、:checkbox 等选择器扩展
  • #10003: 来自 #6963 的回归/BC 突破
  • #10074: 将两个 [] 选择器与 :first 连用不起作用
  • #10570: :text 选择器在 IE7 中出现错误,当页面上有一个跨域 iframe 时
  • #10697: Sizzle 重构
  • #10809: :focus 伪类解析器中使用“.activeElement”的测试不正确
  • #11109: Sizzle: Expr.relative 过早截断
  • #11814: Sizzle 的元素根 QSA 策略(即附加一个临时 ID)没有考虑逗号和其他选择器分隔符
  • #11826: 为 Sizzle 中的 matchesSelector 探索解析缓存系统

支持

  • #9385: 过时移除 jQuery.browser
  • #11439: 使用了 jQuery.support.parentNode,但它不再定义。
  • #11721: 过时并移除 jQuery.support.boxModel 的内部使用
  • #11766: 将 jQuery.support 更改为“不稳定”状态

遍历

  • #9800: 新方法:.addBack(取代 .andSelf)
  • #11543: .has 在分离的元素上不起作用
  • #11706: .has() 在 document 片段上失败
  • #11738: 移除 .closest(Array) 返回数组的行为

未分类

  • #11325: 改善 domManip/buildFragment/clean
  • #11435: 移除过时的测试代码,从 .data 的返回值中删除 toJSON
  • #11777: 为 jQuery 核心添加对 EditorConfig 文件的支持

最新消息:旧金山 jQuery 大会培训课程!

发布时间: 作者:

为了响应大量的请求和电子邮件,以及我们最初的承诺,我们宣布:我们在旧金山 jQuery 大会之前增加了一天的初级/中级培训课程 :)

门票现已开售 (在左侧,折叠下方)。该培训课程将由我们的朋友 Bocoup 提供,并由微软公司慷慨地提供场地。以下是培训师 Ben Alman 和 Rebecca Murphey 将涵盖的一些内容:

在 Bocoup 为期一天的中级 jQuery 培训中,你将与 jQuery 资深人士一起,建立一个坚实的基础,这将使你成为更强大的开发者,并为接下来的两天里你将看到的精彩演讲做好准备。你甚至可以学习如何创建自己的 jQuery 插件。课程涵盖的主题包括

  • jQuery() 函数
  • 选择和遍历
  • 操作 DOM
  • 使用事件让事情发生
  • AJAX
  • 用效果增强
  • 使用插件扩展 jQuery
  • jQuery UI
  • jQuery Mobile

注意:培训和会议都在旧金山,但地点不同。培训将在旧金山中心区,位于 Market Street,而会议在 UCSF Mission Bay 校园,距离培训地点约 5 到 10 分钟路程。另外请注意,会议和培训需要分别购买门票,如果您想参加两者,请确保您已购买了两个门票。

我们仍在努力增加高级培训,但到目前为止,我们收到的主要是对初学者材料的需求。所以,这里就是了 :)

希望你们都买了参加会议的门票;迫不及待想在那里见到你们!

谈谈专利问题

发布日期: 作者:

随着越来越多的公司进入移动领域,触摸事件已成为 Web 开发人员关注的热门话题。我们大多数人都知道触摸事件支持单点和多点触控跟踪。我们中有些人知道同时处理触摸和鼠标的复杂性。很少有人知道存在多种触摸事件模型,更少的人尝试同时支持多种模型。我想谈谈我们今天所处的位置、我们是如何走到今天这一步的,以及我们将来可能面临的潜在问题。

简要历史

早在 2007 年,苹果推出了 iPhone,随之而来的是触摸事件。Neil Roberts 在一篇 SitePen 文章 中很好地总结了苹果的实现:“尽管 API 乍一看有些粗略,但一旦你学会了它们,你就能在你的应用程序中做出惊人的事情。” 果然,我们已经看到了很多惊人的事情,并没有太多关于“粗略”API 的抱怨。后来,Android、诺基亚、RIM、Opera 等也实现了这种模型。苹果的实现目前仅在其 WebKit 私有分支中可用;直到 2009 年底,触摸事件才首次出现在主要的 WebKit 存储库中,来自 Android 实现。

同样在 2009 年,W3C 开始讨论 DOM Level 3 事件的统一指针模型。其理念是将触摸(包括多点触摸)、笔/手写笔和鼠标事件合并到一个模型中,使其易于同时支持所有指针类型。但是,由于当时的目的是为了让规范尽可能的小,以便更快地成为建议,因此该理念被放弃了。

两年后(2011 年 3 月),Mozilla 发布了 Firefox 4,其中包含了他们自己的触摸事件风格。Mozilla 模型与鼠标事件模型和被放弃的 W3C 模型更为接近,因为事件对象是扁平的;event.pageX 等属性存在,并且没有触摸列表。如果您想跟踪多个触摸,可以通过事件的 streamId 来实现。后来,Mozilla 废弃了这种实现,转而支持基于苹果模型的正在出现的 W3C 规范。

2011 年 1 月,W3C 开始起草基于 WebKit 实现的触摸事件规范。几个月后,它成为工作草案,并在 12 月成为候选推荐。次月,成立了专利咨询组 (PAG) 调查苹果披露的专利。苹果没有参加触摸事件工作组 (WG),以及其专利披露导致 W3C 停止了规范的开发工作,并且他们计划在 PAG 结束或向 WG 作出建议之前不会继续。截至撰写本文时,PAG 尚未就专利的影響做出决定,但该小组的目标是尽快达成结论。

与此同时,微软采取了不同的方法来处理触摸,并在 IE10 中使用 指针事件 实现了他们自己的MSPointerEvent 对象。MSPointerEvent 对象类似于最初的 Mozilla 实现,因为事件对象是扁平的,并且包含 pointerId 属性。但是,MSPointer 与所有其他特定于触摸的模型之间存在一些重要的差异。

注意:以上只是 Web 上触摸事件的简要历史;如果您有兴趣了解触摸界面的历史,您可能想查看 Bill Buxton 的 我所认识和喜爱的多点触摸系统

指针事件与触摸事件

如上所述,通用指针事件(如最初的 W3C 想法或 MSPointer)具有支持多种指针设备的优点。事实上,使用运行 Windows 8 的三星平板电脑,鼠标、笔和手指都被规范化为 MSPointer;您甚至可以使用 pointerType 属性来确定使用哪种类型的指针。除了支持所有当前的指针设备外,MSPointer 的设计方式还使得未来可以轻松添加新的设备,并且现有代码将自动支持新设备。更棒的是,MSPointer 事件对象与其他事件具有相同的结构,与 TouchEvent、TouchList 和 Touch 的集合相比,学习曲线降低了。

MSPointer 和 Touch 之间的另一个主要区别是,MSPointer 支持悬停(悬停和悬停离开事件)。虽然大多数触摸设备的硬件限制不允许悬停,但索尼最近宣布了具有“神奇悬停触控技术”的 Xperia sola。这提出了一个重要问题:触摸事件是基于特定设备为特定类型的输入而设计的。指针事件代表了 Web 上输入的一种完全不同的方法。虽然我们已经介绍了这将如何影响开发人员,但考虑它对硬件制造商的影响也很有趣。为了让苹果在触摸界面上取得成功,他们必须创建一个新的事件模型。针对新外形尺寸和新输入方法的创新要么会被现有标准扼杀,要么需要一组新的 API,效仿苹果在 iPhone 和触摸事件中的做法。指针事件为开发人员和硬件制造商提供了一个干净的解决方案。可以想象,在几年内,开发人员可以使用指针事件作为指针的唯一事件模型,而将鼠标事件作为过去的东西。

支离破碎的未来

尽管 W3C 仍在计划推进触摸事件规范(待 PAG 推荐),但未来尚不清楚。即使 PAG 确定苹果的专利不适用,并且规范成为 W3C 推荐,微软也不一定会实施这种模型,因为 Windows 需要一个多输入事件系统。如果 W3C 要改变方向并开始开发指针事件规范,目前尚不清楚苹果,或者更广泛地说 WebKit,是否会实施新的事件模型。即使有 W3C 推荐,我们也可能在数年内无法在浏览器和设备之间实现一致的事件模型。

无论 W3C 选择追求哪种模型,jQuery 都致力于填补空白,就像我们对提交和更改等其他事件所做的那样。我们认为指针事件模型更易于使用,并且更具未来性,我们希望它能够标准化,即使触摸事件也被标准化。但是,我们只对规范化 W3C 推荐感兴趣,如果不存在官方的 W3C 规范,我们不会提供自定义指针事件。我们正在与 W3C 和微软合作,试图找到对我们的用户和开放式 Web 最佳的前进方式。

行动号召:微软提交指针事件提案

我们希望公开呼吁微软向 W3C 提交指针事件提案。触摸事件工作组,以及更广泛的浏览器供应商,都表示对指针事件感兴趣。最有效的方法是微软正式向 W3C 提交提案。

行动号召:社区尝试两种事件模型

我们还鼓励社区尝试 Touch 和 MSPointer。玩转 API、构建应用程序并提供反馈。如果您有兴趣,但没有必要的硬件,请考虑与一位或多位本地开发人员配对。虽然有很多开发人员在 Touch 之上构建,但很少有人在 MSPointer 之上构建,更少的人公开比较它们。我们鼓励您将您的反馈直接发送到W3C public-webevents 邮件列表,但您可以随意在此留下反馈,我们会转达。

行动号召:提交现有技术

如果您知道任何关于多点触摸/触摸列表的现有技术,即使是在 Web 之外,也请 与 W3C 取得联系。这包括编程模型和 API,尤其是使用事件的那些。这将有助于专利咨询组更快地得出结论。同样,如果您想在此留下评论,我们会转达。

为 jQuery 打保龄球 - 2012 年 4 月,华盛顿特区

发布日期: 作者:

jQuery 团队将去打保龄球,我们希望您能加入我们!我们将在 4 月 13 日星期五晚上在弗吉尼亚州利斯堡的 King Pinz 度过,该地点位于华盛顿特区外。我们有一个私人房间,有 6 条球道,从晚上 6 点到晚上 10 点。当晚将提供无限量保龄球、晚餐、甜点、饮料和台球。甚至还有一个雪茄吧,如果您喜欢的话!

King Pinz

空间非常有限 - 快去买票

保龄球

  • 带 6 条球道的私人房间
  • 4 小时无限量保龄球(包括鞋租)
  • 带鸡尾酒桌的舒适沙发
  • King Pinz: 照片
  • 私人房间:360 度游览

晚餐

  • 开胃菜、主菜和甜点
  • 整晚供应

饮料

  • 开放式酒吧
  • 整晚供应

台球

  • 私人台球桌和休息区

雪茄吧

奖品

  • 1 位获奖者将获得 Adobe Creative Suite Master Collection 5.5 的副本(价值 2600 美元)
    Adobe Creative Suite Master Collection 5.5
    感谢 Adobe。
  • 还会有其他奖品。酷炫的奖品。必须在场才能获奖。

谁会参加?

  • Dave Methvin
  • Yehuda Katz
  • Leah Silber
  • Rick Waldron
  • Karl Swedberg
  • Adam J. Sontag
  • Scott González
  • Dan Heberden
  • Richard D. Worth
  • Corey Frang
  • Kris Borchers
  • 您?

赞助商

请加入我们,感谢我们这次活动的超棒赞助商

 

CustomInk Design T-shirts Online

 

Bocoup - Open Web Technology by and for programmers

 

Adobe

 

Fluidhire - Innovative Technology and New Media Recruiting

 

MoDevUX

 

我们知道您喜欢 jQuery,我们也因为您表现出的喜爱而爱着您。

jQuery 1.7.2 发布

发布于 作者

jQuery 1.7.2 已经发布!候选版本发布得很顺利,我们只做了一个小的改动,今天就将它发布到您的手中。您现在可以从 jQuery CDN 获取最新的代码,Google 和 Microsoft CDN 也会很快跟进。

注意:如果您使用的是 jQuery Mobile,请仅将 jQuery 1.7.2 与 jQuery Mobile 1.1 一起使用。对于之前的 jQuery Mobile 版本,请继续使用 jQuery 核心 1.7.1 或更早版本。

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

像往常一样,如果没有许多人的辛勤工作,这个版本将不可能实现。首先是 jQuery 核心团队:gnarf、jaubourg、mikesherov、rwldrn 和 timmywil。我们也十分感谢 jQuery UI、Mobile 和基础设施团队的支持,特别是 danheberden 与 Trac 的英勇斗争。

像 adebree、caii、cmc3cn、KYSergey、mathiasbynens、miskith、MrMamen、Orkel、pasky、SineSwiper、tavelli 和 vlazar 这样的社区成员通过报告、验证和修复错误做出了贡献。特别感谢 gibson042 和 sindresorhus 为使 1.7.2 成为一个很棒的版本而付出的努力,并向他们颁发 jQuery 金叶簇奖。不要让这些人独享乐趣!如果您想为 web 上最流行的 Javascript 库做出贡献,请加入 IRC 中的 #jquery-dev 频道或我们的论坛 的开发 jQuery 核心部分,并打个招呼!

非常感谢 Louis-Rémi Babé,他在发布前仅仅 30 分钟就提交了一个修复负边距动画回归的补丁

jQuery 1.7.2 更改日志

以下是 1.7.2 版本的更改日志。

Ajax

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

属性

  • #5571:允许在将 undefined 传递给 jQuery 中的任何 setter 时进行链式调用
  • #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-* 属性解析不正确

Deferred

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

尺寸

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

效果

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

事件

  • #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:悬停技巧破坏了名为“hover”的命名空间
  • #11076:.clone(true) 会丢失委托过滤器
  • #11130:jQuery.fn.on:使用 null 选择器进行绑定映射会忽略数据
  • #11145:$(document).on() 不适用于 name=”disabled”

操作

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

其他

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

队列

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

支持

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

遍历

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

宣布 2012 年旧金山 jQuery 大会!

发布于 作者

一年一度的时刻又到了…… 谈论下一届 jQuery 大会 的时间到了!

请将您的日历标记在 6 月 28 日和 29 日。应大家的要求,下一届 jQuery 大会将在旧金山(而不是山景城)举行,地点是位于加州大学旧金山分校 Mission Bay 会议中心 的一个很棒的场所。如果您没有去过那里的活动,以下是一些亮点

  • 我们使用过的最好的会议 wifi
  • 我们吃过的最好的会议食物
  • 全天供应免费的咖啡、苏打水和饮料
  • 很棒的空间,配有舒适的座位、优秀的音视频设备、停车场、方便的公共交通工具、派对场所等等等等

我们对新的场地以及 2012 年旧金山展会的筹备工作感到非常兴奋!今年我们将缩小规模并采用单轨制,因此事情变得更加简单,更加私密,而且总体上的混乱减少了。报名现已开放,名额非常有限门票过去很快就卖光了,这次的门票比上次少了约 150 张!

征稿

我们已经开启了演讲提案征集,征集活动将持续到 5 月 13 日。我们鼓励所有人申请。事实上,我们今年借鉴了 JSConf 的经验,采用了“反向”征集:您被鼓励提名您心仪的演讲者(或其他任何人)来担任您选择的主题的演讲者。当然,也欢迎您提名自己!我们喜欢用新的演讲者、新的主题以及您能想到的一切来增添新鲜感。现在提交提案

赞助商

会议很贵。运行一个开源项目也很贵。没有您的帮助和支持,我们什么都做不了…… 所以请注意!如果您在招聘的公司工作,希望获得开发者宣传的公司,或者想帮助社区并回馈社区的公司,请将他们介绍给我们。如果您(或您的老板)有慷慨之心,请查看会议招股说明书。赞助商福利和巨大业力点都将是您的囊中之物……

培训

我们还在为 6 月 27 日星期三在旧金山举办的培训寻找场地。如果您的公司有场地,或者您有场地的想法,请给我们发送电子邮件,我们将不胜感激。

今天就到这里,各位。请关注有关演讲者、赞助商、培训日以及各种杂项的即将发布的公告。我们还将更新会议网站,添加场地详细信息和派对信息,所以也请关注该网站。最后,像往常一样,如果您有任何问题或意见,请与我们联系或在此留下您的评论。