jQuery 壁纸

发表于 作者

大家好,你可能不认识我,但我叫 Nate,我是一名设计师/程序员。

我一直帮助寻找错误,以及网站设计方面的东西,虽然我不在团队名单上,但在名单写完后我开始帮助一些事情。

为了帮助在世界各地宣传 jQuery,我已经创建了一些极简风格的壁纸来装饰你的桌面。

你可以在这里下载这些文件

jQuery MNML v1. (压缩包中的分辨率:640×480 至 1600×1200)
jQuery MNML v2. (压缩包中的分辨率:640×480 至 1600×1200)
jQuery MNML v3. (压缩包中的分辨率:640×480 至 1600×1200)

jQuery MNML v1
jQuery MNML v1.

jQuery MNML v2
jQuery MNML v2.

jQuery MNML v3
jQuery MNML v3.

享受!

选择器速度

发表于 作者

注意:Jack 已经修复了这篇文章中提到的几乎所有问题 – 干得漂亮!


我们一直在推迟讨论新 1.1 版本中 jQuery 选择器的速度,直到发布接近完成 – 然而,看来这个过程已经提前了。所以既然已经公开了,让我们看看 jQuery 的选择器速度。

简而言之:对于 jQuery 1.1,我们非常努力地让其选择器变得非常快。事实上,根据我们所有的测试,我们比任何其他选择器库都快。在开发 1.1 版本时,Dean Edwards 的cssQuery 远远超过了任何其他选择器库。它非常全面,而且速度非常快。

今天,Jack Slocum 发布了他的新DOMQuery 选择器库。简而言之:标准已经提高。他的库非常非常快。可能是目前最快的库。

然而,在比较他的库和我们的库时,出现了一些我们想澄清的错误。(Jack 和 jQuery 都犯了错误)(作为参考,这是我用于测试的比较套件。)

jQuery 完全支持所有属性选择器。
例如,[@foo],[@foo=bar] 等。显着区别在于 jQuery 在这种情况下使用 XPath 风格的语法。由于 Jack 的测试没有考虑这一点,因此看起来我们所有属性选择器测试都失败了。

我们的“elem:empty”工作正常。
你可以在 Jack 的测试中看到所有选择器(除了 DOMQuery)都无法识别 :empty – 这更多是由于他将结果与 DOMQuery 进行了比较,而 DOMQuery 的结果是错误的。规范规定,如果一个元素不包含任何子元素或文本节点,则该元素为空。在本例中,似乎没有考虑到这一点。

[foo!=bar],:first,:last 不属于任何规范。
…但它们却在测试套件中。顺便说一下,jQuery 确实实现了 :first 和 :last – 但没有实现 [foo!=bar](似乎只在 cssQuery 中?)。总而言之,当你没有设计为这样做时,将自己与他人进行比较非常奇怪。

span:not(span.hl-code) 匹配什么?
这是一个奇怪的灰色区域,我从未在任何地方看到过关于它的讨论,而且规范也无法对此进行澄清。结果集应该是所有没有 hl-code 类别的 span – 还是没有,因为你已经过滤掉了所有 span?例如

// Finds nothing in both
span:not(span)
=> []

// Finds spans that don't have a class of 'foo', in both
span:not(.foo)
=> [ <span>, <span>, ... ]

// jQuery's interpretation of the combination:
$("span:not(span.foo)")
=> []

// DOMQuery's interpretation of the combination:
Ext.select("span:not(span.foo")
=> [ <span>, <span>, ... ]

我们完全承认在这方面可能错了 – 但我很想知道其他人的意见,以及他们对规范的解释是什么。

DOMQuery 没有考虑重复项。
目前,执行 Ext.select(“div div”) 返回的元素比仅执行 Ext.select(“div”) 返回的元素还要多 – 执行 Ext.select(“div div div”) 返回的元素又是一个不同的集合,但仍然比仅执行 Ext.select(“div”) 返回的元素多。事实上,考虑重复项是 JavaScript 选择器库中的一个重大问题 – 而目前,jQuery 是唯一一个能够正确处理这个问题的库。

这一点很重要,因为考虑重复项的成本可能非常高(计算方面)– 所以 DOMQuery 没有考虑重复项,这使它看起来速度更快。例如

// DOMQuery
Ext.select("div").elements.length
=> 246
Ext.select("div div").elements.length
=> 624
Ext.select("div div div").elements.length
=> 523

// jQuery
jQuery("div").length
=> 246
jQuery("div div").length
=> 243
jQuery("div div div").length
=> 239

DOMQuery 不支持多个过滤器:elem.foo[foo=bar] 或 elem.foo.bar
在实现这一点之前,与任何其他库进行比较都不公平。构建一个能够完全处理这些方面的库(参见:cssQuery,jQuery)的成本很高。(无论是代码大小还是速度成本。)

DOMQuery 的 #id 选择器不会检查上下文
你会注意到,如果你尝试执行类似的查询

Ext.select("div #badid").elements
=> [div#badid]

你会得到一个名为“badid”的元素 – 即使该元素实际上不在 div 中。由于 DOMQuery 代码中实际上没有进行有效性检查,因此它速度飞快 – 而且非常错误。

我应该提到,在 1.1 之前,jQuery 在这一点上也错了,所以这是一个很容易忽略的问题。

根元素去哪里了?
你会发现,在 DOMQuery 中搜索“html”和“*”奇怪地缺少一个明显的东西:HTML 元素。从所有查询中排除根 DOM 元素似乎有点奇怪;尤其是因为这完全有效:“html > body *”。

…为了公平起见 – 这里有一个关于我们自己的 :-)

我们的 :nth-child(even/odd) 有缺陷。
目前,它似乎只选择一个元素(!?)。我为这个问题创建了一个工单,它将在本周日发布的 1.1 版本中解决。

总而言之,看到 DOMQuery 取得的速度飞跃非常棒。选择器速度是竞争真正有必要的领域;每次速度提高,每个人都会获益(用户、开发者 – 每个人)。

事实上,查看他的代码后,我已经有了更多关于如何提高 jQuery 速度的想法!

所以,Jack:感谢你帮助我们保持警觉 – 我们期待着看到你的库改进,以及每个人都获益。

jQuery 1.1b

发表于 作者

我们即将准备在本周日发布重大的 1.1 版本 – 但为了让你坚持到最后,这里还有一组错误修复供你测试。jQuery 开发团队一直在加班加点地修复本周收到的所有支持请求,我们已经成功地修复了几乎所有出现的问题。

如果你能抽出时间用你的代码测试新的 1.1b 版本,我们将不胜感激,如果你发现任何错误,请提交到错误跟踪器

然而,并非全是错误修复;我们还有一些新的东西供你尝试:jQuery 1.0 兼容性插件。正如承诺,此插件提供了 1.0.4 版本中所有存在的方法和选择器。因此,理论上,你应该能够引入 jQuery 1.1 和新的兼容性插件,并且所有内容都应该能够无缝地工作。

以下是如何在 jQuery 1.1 中使用兼容性插件

<html>
<head>
  <script src="jquery-1.1.js"></script>
  <script src="jquery.compat-1.0.js"></script>
  <script>
    $(document).ready(function(){
        // Your old 1.0-centric code
    });
  </script>
</head>
<body></body>
</html>

因此,虽然你完全可以继续在可预见的未来使用兼容性插件,但我们强烈建议你按照之前提到的升级计划进行操作。

所以,再次提醒你:请帮助我们测试此测试版!你越帮助我们测试,最终的 1.1 版本就越完善。感谢你的帮助!

下载

更新:我忘记提了几件事(这就是我凌晨 4 点发布版本后的后果)

  • .filter([“.foo”, “.bar”]) 现在是 .filter(“.foo, .bar”):一个更简单的解决方案 – 并且兼容性插件中已经包含了修复。
  • .我们决定保留 .height() 和 .width()。它们已回归,因为它们非常有用。
  • 文档已更新至 1.1b 版本(所以对于那些仍然看到 .filter([...]) 或没有看到 .height() 和 .width() 的人 – 现在已经修复了。)

jQuery 1.1a

发表于 作者

正如之前宣布的,今天我们发布了 jQuery 1.1 的 alpha 版。我们非常感谢你能帮助我们测试此 alpha 版,以便我们能够在本周末发布正式版 – 正好赶上 jQuery 的一周年纪念日!(1 月 14 日)

这将是一个很棒的版本。事实上,这个版本非常棒,我们会花一整周的时间来告诉你新功能以及如何最好地使用它们。推广团队准备了一系列内容来帮助你熟悉并使用这个很棒的 jQuery 新版本。

以下是 jQuery 1.1 的快速说明

  • 它的选择器比 jQuery 1.0.4 中的选择器快 10-20 倍。
  • 文档 已完全改版。
  • API 的复杂性降低了 47%
  • 它修复了大量错误。
  • 它拥有许多很棒的新功能。
  • … 并且它仍然是您所熟悉的 19KB 的小文件。

我们将在未来几天内完整介绍,但目前为止,它正在成为一个很棒的版本。

下载

API 更改

注意:我们将在 jQuery 1.1 正式发布时,与 jQuery 1.1 的完整版本一起发布一个向后兼容插件,该版本将在本周末发布。

重要的是要注意,API 已经发生了很多变化。一些是添加,一些是重组。如果您想帮助我们测试此 alpha 版本,请牢记这些变化。

:nth-child() 现在从 1 开始,而不是 0。我们对 CSS 3 选择器的实现从 0 开始编号,而不是 1。这是一个错误修复,但可能会影响您的代码。

// 1.0.x: Get the first column from a table
$("td:nth-child(0)")

// 1.1: Get the first column from a table
$("td:nth-child(1)")

以下 方法已在此版本中重命名/重组,以下是您按预期继续使用它们的方法

旧方法 (1.0.x) 新方法 (1.1)
.ancestors() .parents()
.width() .css(“width”)
.height() .css(“height”)
.top() .css(“top”)
.left() .css(“left”)
.position() .css(“position”)
.float() .css(“float”)
.overflow() .css(“overflow”)
.color() .css(“color”)
.background() .css(“background”)
.id() .attr(“id”)
.title() .attr(“title”)
.name() .attr(“name”)
.href() .attr(“href”)
.src() .attr(“src”)
.rel() .attr(“rel”)
.oneblur(fn) .one(“blur”,fn)
.onefocus(fn) .one(“focus”,fn)
.oneload(fn) .one(“load”,fn)
.oneresize(fn) .one(“resize”,fn)
.onescroll(fn) .one(“scroll”,fn)
.oneunload(fn) .one(“unload”,fn)
.oneclick(fn) .one(“click”,fn)
.onedblclick(fn) .one(“dblclick”,fn)
.onemousedown(fn) .one(“mousedown”,fn)
.onemouseup(fn) .one(“mouseup”,fn)
.onemousemove(fn) .one(“mousemove”,fn)
.onemouseover(fn) .one(“mouseover”,fn)
.onemouseout(fn) .one(“mouseout”,fn)
.onechange(fn) .one(“change”,fn)
.onereset(fn) .one(“reset”,fn)
.oneselect(fn) .one(“select”,fn)
.onesubmit(fn) .one(“submit”,fn)
.onekeydown(fn) .one(“keydown”,fn)
.onekeypress(fn) .one(“keypress”,fn)
.onekeyup(fn) .one(“keyup”,fn)
.oneerror(fn) .one(“error”,fn)
.unblur(fn) .unbind(“blur”,fn)
.unfocus(fn) .unbind(“focus”,fn)
.unload(fn) .unbind(“load”,fn)
.unresize(fn) .unbind(“resize”,fn)
.unscroll(fn) .unbind(“scroll”,fn)
.ununload(fn) .unbind(“unload”,fn)
.unclick(fn) .unbind(“click”,fn)
.undblclick(fn) .unbind(“dblclick”,fn)
.unmousedown(fn) .unbind(“mousedown”,fn)
.unmouseup(fn) .unbind(“mouseup”,fn)
.unmousemove(fn) .unbind(“mousemove”,fn)
.unmouseover(fn) .unbind(“mouseover”,fn)
.unmouseout(fn) .unbind(“mouseout”,fn)
.unchange(fn) .unbind(“change”,fn)
.unreset(fn) .unbind(“reset”,fn)
.unselect(fn) .unbind(“select”,fn)
.unsubmit(fn) .unbind(“submit”,fn)
.unkeydown(fn) .unbind(“keydown”,fn)
.unkeypress(fn) .unbind(“keypress”,fn)
.unkeyup(fn) .unbind(“keyup”,fn)
.unerror(fn) .unbind(“error”,fn)

我知道这是一个很长的列表,但你会惊讶地发现,有多少人没有使用过这些方法。通过删除所有这些方法,我们能够将 jQuery API 的大小减少 47%。我们将在稍后提供更多关于 API 更改的信息,但现在,此列表应该可以帮助您解决代码中的任何重大差异。

如果您有任何问题,请随时在评论区中发布,我们会尽快回复您。

通往 1.1 的道路

发布于 作者

快速更新一下,让大家了解情况:jQuery 开发团队目前正在开发即将发布的 jQuery 1.1 版本。因此,在接下来的几周内,SVN 将会发生相当大的变化。以下是目前的游戏计划

  • jQuery 1.1a 1 月 7 日 – 快速发布 alpha 版本,帮助大家测试他们的代码,并将其迁移到即将发布的 1.1 版本。
  • jQuery 1.1 1 月 14 日 – 这将是正式发布,与 jQuery 一周年纪念日同时进行。

需要注意的是,jQuery 1.1 将不向后兼容 1.0。变化将以不同的方式发生,但到目前为止,以下是计划更改的内容

  • 像 .oneclick() 和 .unclick() 这样的方法将被 .one(“click”)(新)和 .unbind(“click”) 替换。我们发现,这些方法的使用频率不足以证明它们所需的 70 多个 API 条目。
  • 选择器 :nth-child()、:gt()、:lt() 和 :eq() 将从 1 开始计数,而不是 0,与 CSS 规范一致。(这是一个错误修复,但会导致意外的 API 更改)
  • 一些 CSS 辅助方法将被删除,例如:.color() 和 .background()。您应该开始迁移到使用 .css(“color”) 和 .css(“background”) 替代。
  • 一些属性辅助方法,如 .title() 和 .rel() 将被删除。您应该开始使用 .attr(“title”) 和 .attr(“rel”) 替代。

这样做是为了帮助减少 jQuery API 中包含的方法数量。减少 70 多个条目将显著减小文档的大小,并使其更易于维护和阅读。

如果您对 jQuery 代码库的发展方向感兴趣,请随时订阅 jQuery 开发邮件列表,jQuery 开发团队将在邮件列表中深入讨论所有这些问题。

更新:我忘记提到,将会有一个兼容性插件,可以帮助您过渡到 jQuery 1.1。这样,您就可以在可预见的未来继续使用 .oneclick()(以及所有其他方法)(即使它可能不在 jQuery 核心代码中)。

认识 jQuery 背后的团队

发布于 作者

我想要借此机会向大家介绍 jQuery 背后的团队。对于哪些人参与了这个项目,以及他们为项目做了些什么,我们还没有说的足够多。这个事实,再加上最近的重组,让现在成为了向您展示 jQuery 在幕后如何运作的绝佳时机。

jQuery 是一项不可思议的工程,有 11 人直接贡献时间来推进 jQuery(以及无数其他人贡献插件、错误修复和知识)。鉴于他们的工作价值无法估量,将注意力吸引到所有帮助该项目的人员的工作上很重要。

预计在未来一个月(到 1 月 14 日 – jQuery 一周岁“生日”),jQuery 项目将会有许多进步。

现在是参与 jQuery 项目的绝佳时机。找到一个您感兴趣的团队,加入他们的邮件列表,并积极参与。帮助总是受欢迎的。如果您没有时间贡献给项目,经济贡献 总是受欢迎的(并有助于维护您对项目期望的服务器和质量水平)。

那么,不再赘述,我向您介绍:jQuery 背后的团队

开发团队

开发团队维护 jQuery 的核心部分:代码本身;自项目开始以来,一直在推动项目向前发展。它在最近几个月里一直在慢慢发展,跟上对功能和错误修复的需求。

开发团队的职责就是:通过添加新功能来提高 jQuery 代码库的质量,并修复现有问题(为所有人创建一个更稳定的库)。此外,该团队还负责记录所有 jQuery API,构建一个稳定的 测试套件,并维护 jQuery 构建系统(通过该系统构建所有 jQuery 代码、文档和测试)。

John Resig (美国马萨诸塞州)

John 是一位程序员和作家,住在马萨诸塞州波士顿。他负责管理 jQuery 库的发展方向。这包括批判性地审查现有(和预期)的功能,并做出明智的决策。他还负责管理开发资源,以及项目不同方面的投入时间。

Jörn Zaefferer (德国贝格诺伊施塔特)

Jörn 是一位程序员,住在德国。他是 jQuery 开发流程的驱动力,贡献了大量的错误修复,并推出了许多 1.0.x 版本。他还负责完全重建 jQuery 测试套件,并编写了大部分测试用例。在过去几个月里,他一直是 jQuery 开发流程的驱动力,帮助 jQuery 更加接近 1.1 版本的发布。

Brandon Aaron (美国德克萨斯州)

Brandon 是一位开发者,住在德克萨斯州,是开发团队的新成员。他为 1.0.x 版本贡献了大量的错误修复,现在正在批判性地审查 jQuery 核心代码中的动画和 CSS/DOM 方面。他希望在代码速度和清晰度方面做出重大改进。这将使我们能够做到像暂停/恢复动画这样的事情。

Paul Bakaus (德国美因茨)

Paul 是一位程序员,住在德国,是 jQuery 的赞助贡献者。他在 jQuery 上的工作重点是将 jQuery 变成一个高速库,能够处理困难的大规模拖放操作。他主要负责创建最近的 尺寸插件,并建议对 jQuery 的 CSS 方法进行大量改进。他所有工作都与 界面插件 相关,并试图创建一个高速拖放解决方案。

Stefan Petre (罗马尼亚)

Stefan 是一位开发者,住在罗马尼亚,是 界面插件 的创建者。他创建该插件的动机是希望创建快速、交互式的基于 Web 的应用程序。界面已被采用为官方赞助的 jQuery 插件(以及其他一些高质量的插件)。Paul 和 Stefan 目前正在共同努力,以提高界面插件的整体质量(包括速度和代码质量)。

Mike Alsup (美国纽约)

迈克是一位居住在纽约的开发人员,负责维护 jQuery 的官方 表单插件。他投入了大量精力来将 Ajax 表单提交流程统一并测试到一个单独的插件中。此外,他的许多工作也反过来促进了核心 jQuery Ajax 代码质量和一致性的提高。

传教团队

这是一个全新的 jQuery 团队。该团队的重点是关注 jQuery 社区的脉搏(内部外部),并尽其所能提供帮助。通常情况下,这意味着创建新的教程、解释困难问题,或向其他团队传达需要更新或更改的内容。

可以将该团队视为一种开发者关系——将 jQuery 用户的愿望传递给开发/网络/设计团队,同时主动将 jQuery 推广给尚未接触到它的用户。

雷·班戈 (佛罗里达州,美国)

雷·班戈是一位居住在南佛罗里达的顾问,专门从事富互联网应用程序开发。他一直使用 jQuery,并将它的优势推广给了许多人。他已经帮助将 许多 知名 Cold Fusion 开发人员转化过来。他也是 jQuery 按钮比赛 的发起者和组织者之一。

卡尔·斯韦德伯格 (密歇根州,美国)

卡尔是一位居住在密歇根州的开发人员,维护着 学习 jQuery 网站。他撰写了大量教程,帮助人们更好地理解 jQuery 的工作原理。他是 jQuery 邮件列表的常客,帮助新用户适应使用该库。作为传教团队的一员,他将继续他的工作,寻找需要帮助理解该库精髓的人,并为他们提供必要的资源来快速上手。

网络团队

网络团队完全负责创建新的 jQuery 网站。这是一个已经计划了很长时间的团队,现在终于开始实施了。这在很大程度上是因为这是一个艰巨的项目。

简而言之,在接下来的几周内将推出许多新功能。整个过程将需要一些时间,但最终的结果将非常值得。您可以期待的首批功能包括一个合适的讨论区(与现有的 邮件列表 相连)以及一个用于存储所有现有 插件 的合适存储库。

所有这些都将使用 Drupal CMS 构建。最近,我们帮助 Drupal 转向了使用 jQuery 作为他们的主要 JavaScript 库(为即将发布的 5.0 版本中所有基于 Drupal 的网站提供支持)。在与 Drupal 开发团队合作的过程中,他们非常乐意以任何可能的方式帮助我们创建新网站。除了这种支持外,Drupal 引擎功能强大,提供了我们为新网站提供支持所需的大部分功能。

除了 Drupal 开发团队之外,以下 Drupal 用户也自愿贡献时间和精力来帮助构建新的 jQuery 网站。

迈克·霍斯特勒 (科罗拉多州,美国)

迈克是一位居住在科罗拉多州的开发人员。他在设置基于 Drupal 的网站方面拥有丰富的经验。尤其值得一提的是,他为另一个开源项目:QCodo 创建了一个 Drupal 社区和插件区域。他已经开始工作,建立网络团队将要使用的基础区域——并将 SVN 插件存储库直接集成到基于网络的插件存储库中(以便所有需要它的人都可以统一访问)。他的工作将作为网络团队其他开发工作的基础。

泰恩·皮珀 (爱丁堡,英国)

泰恩是一位居住在英国的开发人员。他在 PHP 和 Drupal 方面拥有丰富的经验。泰恩最近使用 Drupal 创建了 getjQuery.org 网站——当时我看到了将他引进的机会,帮助将他的许多愿望功能添加到官方 jQuery 网站中(例如讨论区和插件存储库,仅举几例)。

设计团队

设计团队是 jQuery 开发流程中的另一个新成员。该团队的目标是实施 jQuery 网站的完整重新设计,以及所有即将推出的子部分(这与网络团队合作进行,为他们的工作实施设计)。

该团队包含许多独立的方面(如图标设计、品牌设计、图形设计和 XHTML/CSS 编写),这些方面将通过不同的网络项目联系在一起。

布拉德利·塞波斯 (俄亥俄州,美国)

布拉德利是一位居住在俄亥俄州的独立设计师。他已经开始了一些精细的工作,创建了新的 jQuery.com 设计的一些出色的模型。他将负责完成新的 jQuery 主页的可靠设计。他还将负责为网站的其余部分(以及整个 jQuery 项目)制定可靠的品牌设计指南。

斯凯·乔丹诺 (密苏里州,美国)

斯凯是一位教授,在密苏里州教授网页设计。他已经与布拉德利合作设计了新网站。在接下来的几周内,他将专注于网站的特定部分,从头开始进行完整的设计。(例如讨论区或插件区域——这还没有确定)。

帮助您理解 jQuery

发布于 作者:

一些 最近 文章 讨论了拥有“真正好的” JavaScript 库教程的必要性。

我们一直在努力改进 jQuery 文档,使其更实用,因此我想问大家一个问题:哪些教程可以帮助您更好地使用或学习 jQuery? 确保它很简单(比如“构建一个下拉菜单”),而不是非常复杂(比如“构建一个完整的购物车系统”)。请随时在评论中发布您的建议,这将有助于我们了解人们想要什么以及需要改进什么。

我们最近开始重新组织 jQuery 文档维基。现在它非常混乱,到处都是。然而,从 新维基的结构 中可以看到,我们正在努力更全面地展示 jQuery 本身。在每个主题中,我们希望包含一些有用的“常见案例”教程,帮助您更好地理解 jQuery API 中的功能。

因此,请您:(考虑到您对 新维基 结构的了解)什么可以帮助您更好地学习和使用 jQuery?

jQuery 1.0.4

发布于 作者:

另一个出色的 jQuery 版本已经可以供您使用了。此版本包含许多错误修复(与往常一样)以及对 jQuery Ajax 功能的一些急需的改进。

与往常一样,如果您对新版本有任何疑问或疑虑,请随时在 jQuery 邮件列表 上进行讨论。如果您认为发现了一个错误,请 将其添加到错误跟踪器 中。

因此,不再赘述,以下是 jQuery 1.0.4

下载

更改和功能

  • 大量的错误修复(完整列表
  • 对 $.ajax() 的扩展:$.ajax 接受额外的选项:beforeSend、async 和 processData;返回 XMLHttpRequest 以允许手动中止请求,有关详细信息,请参阅文档。

    示例:使用 beforeSend 将额外的标题添加到 Ajax 请求。

    $.ajax({
      type: "POST",
      url: "/files/add/",
      beforeSend: function(xhr) {
        xhr.setRequestHeader( "Content-type", "text/plain" );
      },
      data: "This is the contents of my text file."
    });

    示例:执行同步 Ajax 请求。

    // Get the HTML of a web page and save it 
    // to a variable (the browser will freeze until the 
    // entire request is completed).
    var html = $.ajax({
      type: "GET",
      url: "test.html",
      async: false
    }).responseText;
    
    // Add the HTML into the page
    $("#list").html( html );

    示例:使用 processData 发送 JavaScript 对象。

    // The data to send to the server
    var params = {
      name: "John",
      city: "Boston"
    };
    
    // Send the data, but have it be converted into
    // a format the server can understand (w/ processData)
    $.ajax({
      type: "POST",
      url: "/user/add/",
      data: params,
      processData: true
    });

    示例:在特定延迟时间后中止 Ajax 请求。

    // Perform a simple Ajax request
    var req = $.ajax({
      type: "GET",
      url: "/user/list/",
      success: function(data) {
        // Do something with the data...
        // Then remove the request.
        req = null;
      }
    });
    
    // Wait for 5 seconds
    setTimeout(function(){
      // If the request is still running, abort it.
      if ( req ) req.abort();
    }, 5000);

  • AJAX 模块:公共 $.ajax API 现在在内部使用(用于 $.get/$.post 等);加载脚本现在在所有浏览器中都更加可靠(除了 Safari,它正在开发中)。
  • 新的全局 Ajax 处理程序:ajaxSend——在发送 Ajax 请求之前调用。

    示例:使用 ajaxSend 事件将额外的标题添加到所有 Ajax 请求。

    $(document).ajaxSend(function(xhr){
      xhr.setRequestHeader("X-Web-Request", "MySite.com");
    });

  • 对全局 Ajax 处理程序的扩展:ajaxSend、ajaxSuccess、ajaxError 和 ajaxComplete 获取传递给它们的 XMLHttpRequest 和设置。

    示例:阻止发送过多数据的任何 POST 请求。

    $(document).ajaxSend(function(xhr,options){
      if ( options.type == "POST" && options.data.length > 1024 )
        xhr.abort();
    });

    示例:显示使用 Ajax POST 提交的请求的特殊消息。

    $("#dataSent").ajaxSend(function(xhr,options){
      if ( options.type == "POST" )
        $(this).show();
    });

  • 对事件处理的扩展:pageX 和 pageY 现在在所有浏览器中都可用。(IE 不提供本机的 pageX/Y)。

    示例:让工具提示跟随用户的鼠标在页面上移动。

    $(document).mousemove(function(e){
      $("#mousetip").css({
        top: e.pageY + "px",
        left: e.pageX + "px"
      });
    });

  • 改进的文档:$(String) 方法现在有两个单独的描述,一个用于选择元素,一个用于动态创建 html。
  • FX 模块:动画添加的大多数内联样式现在在动画完成时将被删除,例如,在动画高度时的高度样式(例外:显示样式)。