Interface 1.1 发布

发布日期 作者

广受欢迎的基于 jQuery 的拖放、动画和 Widget 库,Interface 已经 发布了 1.1 版本,与 jQuery 1.1 的发布同时进行。

Interface Color Picker

关于此版本的一些注意事项

  • 全新的 animateClass、animateStyle 和 animateColor 处理程序。您现在可以从一个特定类动画到另一个类,以及从一种颜色动画到另一种颜色。
  • droppables 和 sortables 的速度得到了大幅提升。
  • 文档已经过全面修订,现在非常全面。
  • 下载区 已经过重新设计,并且完全交互式。
  • 有很多 演示 可以查看。他们更新了许多现有的演示,并添加了一些新的热门演示,例如:颜色选择器图像裁剪器全景视图 以及一个 文件夹树

总而言之,这是一个很棒的版本。如果您还没有机会尝试 Interface,我建议您现在就开始尝试。

jQuery 生日:1.1、新网站、新文档

发布日期 作者

好消息,大家!今天是 jQuery 的一周年“生日”! (我在一年前的今天,在 纽约 BarCamp 发布了它。)为了庆祝,我们准备了一大堆东西供您享用。

1) jQuery 1.1

这是一个很棒的版本 - 包含大量错误修复、巨大的速度提升 以及对出色 API 的 重大简化。强烈建议您升级以获得此版本的所有优势。

立即下载

升级指南

在从 1.0.4 升级到 1.1 之前,请务必阅读这些指南 - API 已经做出了一些更改,这些指南详细介绍了如何处理这些更改,以及如何使用新的 jQuery 1.0 兼容性插件 在 1.1 中保留 1.0 风格的功能。

新功能

  • 根据我们的所有 统计jQuery 1.1 的选择器比 jQuery 1.0.4 中的选择器快 10 到 20 倍。这应该会在您的 jQuery 应用程序中带来明显的差异。
  • 常见的选择器,如 div#iddiv .classtd:nth-child(1)div > div 都明显更快。这简直是天壤之别。试试看,您就会明白。
  • 您现在可以将函数作为属性或 CSS 属性的值传递。该函数将被执行,并且它的返回值将被设置为该属性的值。例如
    // 1.0 Code
    $("a").each(function(){
        $(this).attr("href", "/item/" + this.id);
    }).show();
    
    // 1.1 Code
    $("a").attr("href", function(){ return "/item/" + this.id; }).show();
  • 您现在可以从事件处理程序本身中取消绑定它。这使您可以拥有仅绑定特定执行次数的事件处理程序,例如
    $("button").click(function(e){
        // Unbind the event handler if a specific form is hidden
        if ( $("#submitForm").is(":hidden") ) {
            $(this).unbind( e );
        }
    });
  • 轻松绑定一个只会发生一次的事件(这将取代旧的 .oneclick() 功能)
    // Show a thank you message for a form submission, but only once
    $("form").one("submit",function(){
        $("#thankyou").show();
    });
  • 您现在可以设置元素的文本值(这与 .html() 不同,在 .text() 中,所有 HTML 都将显示为文本)。
    $("pre").text("<b>Hello</b>, how are you?");
    
    // Result:
    <pre>&lt;b&gt;Hello&lt;/b&gt;, how are you?</pre>
  • 您现在可以使用自定义函数构建自己的过滤器。(这在 1.0 中存在,但文档不完善。)
    // Find all divs whose parent isn't hidden
    $("div").filter(function(){
      return $(this).parent(":hidden").length > 0;
    });
  • 您现在可以将逗号分隔的选择器列表传递给以下过滤器函数
    filter、find、not、siblings、parents、children、next、prev。这使您可以做一些非常酷的事情

    // Find all radio buttons, or checkboxes, in a form
    $("form input").filter(":radio, :checkbox");
    
    // Find the next element that's a span, or a div
    $(this).next("span, div");

2) 重新设计的网站

jQuery Site Screenshot
jQuery 网站的设计终于进行了急需的改版。这是由出色的 jQuery 设计团队 规划并由 Nate Cavanaugh 实现的。设计团队计划进行完整的重新设计/重构,但我们想要一些能够帮助我们从当前设计过渡到全面改版的方案。希望您喜欢它 - 并务必感谢 Nate、Bradley 或 Skye 的出色工作!

3) 全面修订的文档

最近,我们一直在努力的一个重点是将 jQuery 文档、教程和 API 真正整合在一起,并将其分类到一个集中式位置。这项努力的结果就是全新的
http://docs.jquery.com/
所有 jQuery 文档都可以在这个集中式位置找到 - 使您更轻松地找到您需要的内容,并更快地完成工作。我们希望您喜欢这种新的结构,如果您有任何建议,请告诉我们,我们可以添加什么来使其变得更好。

4) 一个秘密……

我们已经将这个秘密保留了一段时间,但现在我们终于准备把它公开了……正在编写一本 jQuery 书籍! 一家充满热情的出版商已经站了出来,作者已经完成了四分之一的内容。一些细节还在完善中,我们将在它接近完成时公布一切,但现在看来,我们将在一年的春季/夏季晚些时候发布第一本 jQuery 书籍!

Blank Book

希望您喜欢所有这些东西 - 我们花费了大量时间和精力来使这个版本变得很棒。务必感谢 jQuery 团队 的每个人,他们付出了大量时间和精力来使这个版本发布成功。

我将在明天发布一篇“Query 状态”文章,来谈谈 jQuery 在过去一年的发展历程,而布道团队将会发布几篇博客文章来介绍您可以用新的 jQuery 1.1 做些什么。

谢谢大家,让 jQuery 迎来了精彩的第一年。

jQuery 壁纸

发布日期 作者

您好,您可能不认识我,我的名字是 Nate,我是一名设计师/程序员。

我一直在帮助寻找 bug 和网站设计方面的工作,虽然我不在团队列表中,但在列表编写之后,我开始提供一些帮助。

为了帮助将 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>

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

所以,再次强调:请帮助我们测试这个 beta 版本!您提供的测试帮助越多,最终的 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%
  • 它修复了许多 bug。
  • 它包含了许多很棒的新功能。
  • ......而且它仍然是您所期望的 19KB 小文件。

在接下来的几天里,我们将详细介绍所有内容,但现在,它已经成为一个很棒的版本。

下载

API 更改

注意:当 jQuery 1.1 本周末发布正式版本时,我们将发布一个向后兼容性插件。

需要注意的是,API 发生了许多更改。一些是新增,一些是重新组织。如果您想帮助我们测试这个 alpha 版本,请牢记这些更改

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

// 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 规范一致。(这是一个 bug 修复,但会导致 API 发生意外更改)
  • 一些 CSS 辅助方法即将被移除,例如:.color() 和 .background()。您应该开始使用 .css("color") 和 .css("background") 替代它们。
  • 一些属性辅助方法,例如 .title() 和 .rel() 即将被移除。您应该开始使用 .attr("title") 和 .attr("rel") 替代它们。

这些变更主要为了减少 jQuery API 中包含的方法数量。减少 70 多个条目将显著减小文档的大小,并使其更容易维护和阅读。

如果您对 jQuery 代码库的未来发展方向感兴趣,请随时订阅 jQuery Dev 邮件列表,在那里 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 (纽约州,美国)

Mike 是一位居住在纽约的开发人员,负责维护 jQuery 的官方表单插件。他已投入大量精力将 Ajax 表单提交过程统一并测试到单个插件中。此外,他大部分工作都反馈到提高 jQuery 核心 Ajax 代码的质量和一致性中。

推广团队

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

可以将该团队视为一种开发人员关系——将 jQuery 用户的愿望传达给开发/Web/设计团队,同时,尽其所能将 jQuery 传达给尚未发现它的用户。

Rey Bango (佛罗里达州,美国)

Rey Bango 是一位居住在南佛罗里达州的顾问,专门从事富互联网应用程序的开发。他已经使用 jQuery 一段时间了,并将它的优势推广给了很多人。他已经帮助一些知名的 Cold Fusion 开发人员转换了平台。他还负责启动并帮助运营jQuery 按钮竞赛

Karl Swedberg (密歇根州,美国)

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

Web 团队

Web 团队全面负责创建新的 jQuery 网站。这个团队已经计划了很长时间,但现在才开始启动。这主要是因为这是一个非常艰巨的项目。

简而言之,未来几周将推出许多新功能。整个过程将需要一些时间,但结果将非常值得。您首先可以期待的功能是完善的讨论区(与现有的邮件列表相连)以及所有插件的完善存储库。

所有这些都将使用Drupal CMS构建。最近,我们帮助 Drupal 将其主要 JavaScript 库转换为 jQuery(为即将发布的 5.0 版本提供支持所有基于 Drupal 的网站)。在与 Drupal 开发团队合作的过程中,他们非常慷慨地为新网站提供任何可能的帮助。除了这项支持外,Drupal 引擎功能强大,几乎可以提供我们为新网站提供支持所需的一切功能。

除了 Drupal 开发团队外,以下 Drupal 用户还表示愿意捐献自己的时间和精力来帮助构建新的 jQuery 网站。

Mike Hostetler (科罗拉多州,美国)

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

Tane Piper (爱丁堡,英国)

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

设计团队

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

这个团队有许多不同的方面(例如图标设计、品牌、图形设计和 XHTML/CSS 编写),它们将通过不同的 Web 项目结合在一起。

Bradley Sepos (俄亥俄州,美国)

Bradley 是一位居住在俄亥俄州的独立设计师。他已经开始了一些优秀的工作,创建了一些新 jQuery.com 设计的优秀模型。他将专注于完成新 jQuery 主页的可靠设计。他还将负责制定针对其他网站(以及整个 jQuery 项目)的可靠品牌和设计指南。

Skye Giordano (密苏里州,美国)

Skye 是一位教授,教授 Web 设计,居住在密苏里州。他一直与 Bradley 合作设计新网站。在接下来的几周中,他将专注于网站的特定部分,从头到尾地完全设计。(例如讨论区或插件区——这尚未确定)。

帮助您理解 jQuery

发布于 作者

一些最近文章讨论了需要为 JavaScript 库提供“真正出色”的教程。

像往常一样,我们一直在努力使 jQuery 文档更完善、更实用,所以我想提出以下问题:哪些教程可以帮助您更好地使用或学习 jQuery? 请确保它很简单(例如,“构建下拉菜单”),而不是太复杂(例如,“构建完整的购物车系统”)。欢迎您在评论区分享您的建议,这将有助于我们了解人们想要什么以及需要改进的地方。

我们最近开始对jQuery 文档 wiki进行重组。目前它相当杂乱无章。正如您从新 wiki 的结构中看到的那样,我们正在努力更全面地展示 jQuery 本身。在每个主题中,我们想包含一些实用的“常见案例”教程,帮助您更好地理解 jQuery API 中的函数。

所以请:(请考虑新 wiki的结构)哪些内容可以帮助您更好地学习和使用 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 模块:动画添加的大多数内联样式现在在动画完成后被删除,例如,在动画高度时的高度样式(例外:显示样式)。