jQuery 1.0.2

发表于 作者

jQuery 1.0.2 现已可供使用!此版本是一个大型的 bug 修复版本 - 强烈建议您立即升级。像往常一样,如果您发现任何 bug,请 添加到 bug 跟踪器

除了拥有更好的测试套件之外,此版本的另一个重要改进是增强了对常见任务(例如 AJAX 操作)的跨浏览器兼容性。然而,在此版本中没有添加任何主要功能(尽管预计在 1.1 版本中会有一些新的代码)。

我借此机会向大家介绍 Jörn Zaefferer。此版本中的许多改进都是由他完成的。他负责对测试套件进行全面改造(现在有 260 多个测试!),并修复了大多数当前的 bug 和增强功能(超过 60 个)。如果您要感谢某个人为这个版本做出贡献,那就是他。

立即下载

已关闭的票证

此版本中关闭的 bug 或增强功能的完整列表

  1. 跨浏览器尺寸
  2. IE 中完全不透明的文本渲染
  3. 如果已设置不透明度,FadeIn/FadeOut 会中断
  4. css(‘top’) 和 css(‘left’)
  5. fx.custom() 在 IE 中不适用于不透明度
  6. IE 中不透明度不起作用
  7. jQuery IE6 中与 base href 相关的 bug
  8. [补丁] 已解决 IE 不透明度问题
  9. 命名空间元素和属性的选择
  10. append(html) 函数失败,如果 html 是表格片段且以空格开头
  11. IE 在半透明抗锯齿文本上的怪异行为,一个小小的修复
  12. 修复了表单中 getAttribute(‘action’) 的问题
  13. IE 在嵌套的 each 循环中为 $(this) 抛出错误
  14. IE5 脚本错误
  15. Mozilla/Firefox 浏览器中的内存泄漏(使用 addEventListener)
  16. 过滤器似乎无法正常运行
  17. $(‘node1/node2’) 在 node1 为空时会产生错误
  18. add 不会合并集合
  19. 扩展 not(jQuery) 以便能够对集合进行操作
  20. 记录 $(”
  21. $.load 需要一个回调函数
  22. [补丁] $().hover 在 Firefox 中出现错误
  23. :not() 中的属性值
  24. children() 可能会返回空值
  25. IE 在嵌套的 each 循环中为 $(this) 抛出错误
  26. ajax 摘要 / 待办事项列表
  27. Safari 在测试套件中崩溃
  28. 错误的 Safari 检测
  29. IE 和 Firefox 中 next() 的行为不同
  30. [补丁] IE 事件系统中的内存泄漏
  31. AJAX 的不同编码
  32. IE 6 删除空格,例如在使用 append 时
  33. hover() mouseout 故障
  34. $.postJSON
  35. 传递给 $.get() 的参数被错误地追加到查询字符串中,
  36. 在不带参数的情况下调用 load 会抛出异常
  37. 在 IE 中返回 script 标签失败
  38. 不可用的响应头会破坏 Firefox 1.0
  39. 传递给 $.ajax() 的 ifModified 参数
  40. AJAX 的超时参数
  41. 替换 :input、:radio 等
  42. AJAX 重构
  43. jQuery 的 toggle(); 与 moo.fx 的 toggle(); 混淆
  44. 解析不透明度时出错
  45. .constructor == Function 不足以判断
  46. [补丁] $().hasClass()
  47. 创建 IE 5.0 支持插件
  48. [补丁] 在 IE 中,没有边框时 innerWidth 和 innerHeight 失败
  49. sibling() 返回兄弟节点和主题
  50. IE 在处理 #element/* 表达式时失败
  51. XHTML 表格
  52. 当 HTML 结构包含文本时,wrap 会中断
  53. 修复了特殊属性的情况下属性 *=、^= 和 $= 的问题。
  54. `]` 会破坏选择器
  55. 再次包含 jQuery 会覆盖已注册的 document-ready 事件
  56. 表达式在 FireFox 1.5.0.6 中会产生错误
  57. 支持 ancestor:: 轴
  58. prev() 的工作方式与预期不符
  59. nth-of-type
  60. Animate 函数发布
  61. attr(‘checked’, true) 不起作用

投票:您是谁以及您如何使用 jQuery?

发表于 作者

请在评论中留下您的答案。

  1. 姓名(如果需要可以匿名)
  2. 您是在公司中使用 jQuery 还是个人使用?
  3. 描述您如何使用 jQuery。
  4. 展示!链接到您使用 jQuery 的任何项目。

我们真的想更好地了解你们,不仅仅是核心开发者,还有日常用户。所以告诉我们吧!

(或者,“让我们了解您,并无耻地宣传您的项目!”)。

更新:感谢到目前为止做出回复的各位。

我必须说,我惊讶于你们中竟然有这么多人在企业网站上使用 jQuery。你们(或你们公司)中的许多人可能会考虑从 首页 捐赠给 jQuery 项目。当然,这不是必须的,但这确实可以通过支付开发成本和支付每月服务器账单来确保 jQuery 保持强大。:)

除此之外,我要补充一点:错误报告、插件和其他对社区的贡献与捐赠一样有价值。我的观点是:让我们记住,要以我们所能做到的任何方式回馈社区。

所有您的评论都非常宝贵,无论您是在企业网站上工作的资深人士,还是为娱乐而构建网络应用程序的小人物。继续发表您的意见吧!

视觉 jQuery 杂志发布

发表于 作者

Issue 1 Cover全新视觉 jQuery 杂志的第一期已经发布。它可以在 PDF 格式下载

视觉 jQuery 杂志的目的是为初学者和高级开发者提供有关 jQuery 的信息,对 jQuery 社区中有趣的成员进行采访,以及介绍如何通过插件和其他技巧来最大限度地利用该框架。

第一期包括

  • 关于该杂志的社论评论
  • 赢得哲学:为什么 jQuery 的方法有效
  • 魔法背后的男人:对 John Resig 的采访
  • jQuery 教程:jQuery 对象简介
  • 用于富应用程序开发的插件
  • 认识 Dave Cardwell,jqBrowser 和 jqMaxMin 的开发者
  • 一个很酷的封底广告(相信我,你想看看)

第二期将包含更多与 jQuery 相关的精彩内容

  • 认识 Klaus Hartl,jQuery 选项卡的开发者,他在 Plazes 工作
  • jQuery 教程:jQuery 的 AJAX 功能简介
  • 对视觉效果有用的插件
  • 读者来信

所以快行动起来,不要犹豫,今天就下载这份杂志吧!

更新:请digg 这份杂志,或者将其添加到您的其他社交书签网站(如 delicious)。

赞助 jQuery 开发

发表于 作者

今天传来好消息:Paul Bakaus 获得了其雇主 New Identity AG 的赞助,以回馈 jQuery 项目。他获得了部分工作时间赞助,用于开发与 jQuery 相关的代码。所有这些都将直接回馈到社区。

此外,New Identity AG 正在将一些主要业务切换到使用 jQuery 作为其主要 JavaScript 库。他们有许多知名客户需要他们为其进行开发。

Paul 将从开始执行一些一直“在进行中”的任务,包括:一个 Prototype 支持插件跨浏览器实用程序方法以及 Interface 的功能改进和错误修复。

这清楚地表明了几件事:jQuery 的德国用户群正在迅速增长,开发速度将进一步加快,Interface 正在成为完整“jQuery 包”中的一个重要组成部分。预计很快就会看到一些重要的更新。

使用 jQuery 增强图像

发表于 作者

如果您是 jQuery 的新手,您可能不知道它拥有非常可扩展的插件架构。这并不意味着它很复杂,它并不复杂!

jQuery 的一个受欢迎的功能是内置的效果库。利用 jQuery 的插件架构,一些聪明的人将内置效果更进一步,创建了一些非常令人愉悦的图像增强模块。

三个值得一看的模块

jCarousel
http://sorgalla.com/pages/jcarousel.html

jcarousel-screenshot.gif

Jan Sorgalla 开发的 jCarousel 在水平或垂直组件中显示图像缩略图。配置非常简单,插件页面提供了足够的文档。jCarousel 可以连接到 Flickr、加载静态图像或通过 AJAX 动态加载。

Interface
http://interface.eyecon.ro/ [主站]
http://interface.eyecon.ro/demos/slideshow.html [幻灯片演示]

interface-slideshow-screens.gif

Stefan Petre 开发的 Interface Elements 拥有一个用于显示单个图像的幻灯片组件。在编号图像之间进行淡入/淡出,带有“上一个”和“下一个”链接。总体上非常实用,外观简洁,感觉非常专业。

Thickbox 2.0
https://jqueryjs.cn/demo/thickbox/

thickbox2-screenshot.jpg

Cody Lindley 最近将 Thickbox 更新到了 2.0 版,所以如果您还没有使用它,请再看看。

浏览完整插件列表,找到更多用于增强项目的插件。

将 jQuery 文档提升到新的高度

发布日期: 作者:

jQuery 1.0 巩固了许多框架,但也引入了一些巧妙的结构变化。

首先,框架现在通过 make 文件构建,因此任何人都可以从 Subversion 中检出 jQuery,并编译压缩或未压缩的 jquery.js 以用于其网站。

其次,jQuery 现在包含了 内置测试,make 文件可以构建测试套件,用户可以将其在喜欢的浏览器中运行,以确保最新检入的版本符合要求。目前还没有很多测试用例,但这种情况应该会随着时间的推移而改变(主要是因为添加它们非常容易)。

然而,对我来说,最重要的是包含了内联文档。从 jQuery 1.0 版本开始,框架文档包含在源文件本身中,jQuery 的维护者 John Resig 编写了一个解析器,该解析器将输出 文档的 XML 版本作为 makefile 的一部分(一个简单的make docs将构建文档)。

可视化 jQuery

在 1.0 发布之前,我将旧的 Visual jQuery 网站从基于 Rails 的解决方案(需要手动输入函数)转换为一个网站,该网站会在函数被提交到主干时动态加载文档。

对于技术含量较低的用户来说,这意味着 Visual jQuery 现在将在 jQuery 更新后几乎立即更新。许多人发现可视化文档方便易用,新版本努力保持这种易用性。

感谢 John,他的解析器输出的文件非常适合像 Visual jQuery 这样的网站。他真的将良好的文档作为这次的优先事项。在我看来,jQuery 与竞争对手的区别在于它强调提供可读、良好的文档。我很高兴地说 jQuery 做出了正确的选择。在接下来的几天里,John 将完成所有 jQuery 函数的文档(还有一些函数待完成),可视化文档将完全体现 jQuery API

Visual jQuery 杂志

The Magazine

此外,我还要宣布几件事。

  1. Visual jQuery 将在未来一两周内获得一项重要的新功能。具体来说,用户将能够通过一个实时搜索框按名称和描述对函数进行过滤。该功能将使查找特定函数更容易。
  2. Visual jQuery 正在推出一个在线月刊。它将以 PDF 格式发布,免费提供。第一期将包括对 John Resig 的采访,这是我们关于最新、最棒的 jQuery 插件系列文章的第一篇,以及对 jQuery 对象(整个 jQuery 框架的核心)的可视化介绍。杂志将在每个月的第三个星期三发布,因此杂志的第一期,2006 年 9 月刊,将于 9 月 20 日发布。

与往常一样,请访问 VisualjQuery.com 获取最新的 Visual jQuery 文档和有关杂志的进一步公告。

jQuery 访谈

发布日期: 作者:

人们真的开始关注“jQuery”了!我最近就 jQuery 接受了一些采访并做了几次演讲。以下是大部分采访:一篇杂志采访,两篇在线文章采访,以及一次播客访谈。享受吧!

eWeek:jQuery 简化 JavaScript 和 AJAX 开发

随着越来越多的开发人员采用 AJAX 风格的开发方式来创建更具交互性的应用程序,他们正在寻找工具来简化工作。

jQuery 就是这样的一个工具,一些用户表示,它使 AJAX(异步 JavaScript 和 XML)开发更简洁,因为它简化了 JavaScript 的使用。微软在 8 月初于华盛顿州雷德蒙德举行的 Lang.Net 大会上,一群专家表示,JavaScript 非常难用。

Drupal 播客:jQuery 作者 John Resig

我们刚刚发布了 Drupal 播客的第 21 期!这是对 JQuery 作者 John Resig 的采访。我们谈论了 JQuery 是什么,它如何工作,以及它将如何融入 Drupal。

.net 杂志:jQuery 的 John Resig

对 jQuery 的大多数“重大”更新将与社区相关。我目前正在与一些国际 jQuery 用户合作,他们将把文档和网站的博客文章翻译成其他语言;最有可能从德语、中文、西班牙语、意大利语和法语开始。

此外,由于 jQuery 具有非常简单的插件架构,我还在努力改进整个开发者社区和组织——可以想象一下 jQuery 的 Sourceforge。

InfoWorld:JavaScript 和 .Net 开发人员在独立项目中得到帮助

在 JavaScript 领域,开源 jQuery 项目为开发人员提供了一个 JavaScript 库,以提高 Web 应用程序的质量。jQuery 使编写 JavaScript 和 AJAX(异步 JavaScript 和 XML)变得更容易,jQuery 的首席开发人员兼作者 John Resig 说。

“与其他 JavaScript 库的不同之处在于,它不会强加于你,”Resig 说。开发人员应该能够编写比以前更短的代码,同时仍然获得相同或更好的功能,他说。

jQuery 1.0.1

发布日期: 作者:

第一个 1.0 后发布的版本现已发布——而且(正如你所预期的那样)它是一个 bug 修复版本。在过去几天里,我一直致力于修复一些最紧迫的 1.0 bug,我认为它已准备就绪。因此,不再赘述——以下是 jQuery 1.0.1

我强烈建议你升级到这个版本,因为它只会使你的开发变得更容易(我预计接下来的几个小版本将几乎没有新功能)。以下是此版本修复的内容

还有一些不太紧迫的 bug 修复正在排队,很快就会有一系列不错的增强功能(尤其是针对 AJAX 函数,感谢 Will Jessup)。下一步将是完善 API 文档并将 proj.jquery.com 迁移到 jquery.com。

与往常一样,如果你发现任何 bug,请随时发布到 bug 跟踪器(它可以帮助我跟踪所有内容并保持井井有条)。

更新:我已经对这个更新应用了两个热修复,这两个修复都解决了这个 bug 更新中存在的大问题。这都是因为我在早上某个糟糕的时间发布了这个更新。请确保你从这个页面获取最新的源代码。

jQuery 1.0

发布日期: 作者:

我想借此机会宣布全新的 jQuery 1.0!这个版本倾注了大量的心血。修复了许多 bug,添加了许多新功能,以及对 jQuery 开发流程的全面改革。

实际上,这个版本的规模如此之大,发布它需要几天时间(这包括一个新版本的 jQuery 网站)。因此,请耐心等待我们过渡到完整发布。还有一些需要解决的问题(主要是最终确定新的文档),但所有这些都在进行中,将在接下来的几天内准备好。

现在,以下是一些相关的链接,可以帮助你入门

如果你想构建自己的 jQuery 副本,你可以从 Subversion 中检出它,并从命令行进行构建。你可以通过以下操作获取最新的 jQuery

svn co svn://jqueryjs.cn/home/jquery/src/jquery

还有更多内容即将推出。我将在本周每天发布一篇文章,详细介绍 jQuery 1.0 的某个方面,以及一些演示如何使用所有新代码的屏幕截图。如果你发现任何 bug,请在 bug 跟踪器中提交

我要感谢所有使这个版本成为现实的人。这是一项艰巨的任务,但旅程才刚刚开始。我迫不及待地想深入研究我们计划的一些非常激动人心的进展。祝您编码愉快!

更新:这里有一个有趣的事实。jQuery 1.0 在我博客中的一篇关于 最初设想 的文章发布后,几乎一年后才发布。真是有趣啊!

更新:非常酷的 Visual jQuery 网站也发布了新文档的预览版本,它采用了简洁的风格。他们更新的文档的最终版本将在接下来的几天内发布。

为什么 jQuery 的理念更好

发布日期: 作者:

关于 jQuery 和 Prototype 在代码大小上的区别,这博客上已经有很多文章了。这些文章的基本前提(我同意)是,由于 jQuery 代码的结构方式,与 Prototype 相比,框架中各种典型的 JavaScript 设计模式在 jQuery 中变得更短更简单。

很长一段时间,我都是一个自称的 Prototype 爱好者。当我开始做 Rails 工作时,我发现了这个框架,对于 Rails 开发人员来说,几乎没有其他选择。Prototype,尽管它很丑陋,但它被烘焙到了 Rails 中,而用手工编码 JavaScript 来放弃 Rails 提供的生产力提升是非常困难的。进一步说,这就是我开始开发 jQuery on Rails 的原因,它旨在允许 Rails 开发人员使用 jQuery 作为 Prototype 的直接替换。

但回到本文的目的,jQuery 的编程理念与 Prototype 有着更根本的区别,不仅仅是代码大小。事实上,这种理念上的差异与 Java 和 Ruby 之间的差异非常相似,所以 Rails 社区如此完全地拥抱 Prototype 真是具有讽刺意味。

让我们来看一些代码比较。首先,在特定节点之后添加一些任意的 HTML。

在 Prototype 中

new Insertion.After('myId', 'Arbitrary HTML');

在 jQuery 中

$('#myId').after('Arbitrary HTML');

现在,我们并没有通过减少代码冗余来做太多事情(虽然 jQuery 的代码更简洁),但 Prototype 和 jQuery 在处理这个问题的方法上存在根本差异。

Prototype 创建了一系列单体 *类*,每个类都封装了一些功能。然后,开发人员传入一个 ID 和一些其他参数,类就会执行它应该做的事情。这非常类似于 Java 封装功能的方式(例如,Math 类)。**注意:**这并不是说 Java 不能用这种方式做事情。

jQuery 采用了一种完全不同的方法来处理这个问题。它将 HTML 节点集视为要向其传递消息的对象(更像是传统的 Ruby 方式)。因此,jQuery 不是使用一个单独的类来在 HTML 节点之后添加文本,而是将功能粘贴到 jQuery 对象上,该对象由 $ 函数返回。相比之下,Prototype 的 $ 函数返回一个普通 DOM 节点。

Prototype 试图通过在框架的最新 RC 版本中添加的 $$ 方法来实现类似的功能,但两者之间存在根本差异。虽然 Prototype 的 $$ 返回一个 DOM 元素数组,但 jQuery 的 $ 是整个框架的基础。几乎所有 jQuery 函数都绑定到 jQuery 对象,该对象由 $ 方法返回。
jQuery 方式的优势非常明显

  • **链式调用。**因为 jQuery 对象将功能粘贴到它们自身上,所以它们会返回其他 jQuery 对象,开发人员可以向这些对象传递额外的消息。jQuery 网站上的一个简单例子是 $(“p.surprise”).addClass(“ohmy”).show(“slow”);
  • **CSS 选择器和 XPath 运算符的使用。**因为 jQuery 向对象传递消息,所以它可以(并且已经)在 $ 方法中实现额外的选择器功能。粘贴到 jQuery 对象上的方法只看到一个类似数组的对象,其中包含一系列 DOM 元素。它不关心我们如何获得这些元素。因此,插件开发人员可以轻松地将额外的解析器添加到 $ 方法中,或者将额外的函数粘贴到 jQuery 对象上。
  • 这让我们想到了 **插件开发。**jQuery 的方式非常有利于插件开发。添加利用 jQuery 对象的功能非常容易,而且 jQuery 插件通常比它们对应的插件短得多。 jQuery Plugins
  • **自动循环。**jQuery 方法需要自动遍历数组中的所有 DOM 元素,并应用所需的方法。因此 $(expression).after(‘some HTML’) 会透明地在 expression 返回的每个元素之后添加 HTML。例如,$(‘p’).after(‘some HTML’) 会在页面上的每个 <p> 之后添加 ‘some HTML’。就我个人而言,我认为在我的代码中(在大多数情况下)消除了迭代是使用 jQuery 的最实际、日常的优势之一。
  • **在自身基础上构建。**随着 jQuery 的成熟,在现有架构之上构建插件变得更加容易。因为所有 jQuery 函数都会自动循环,所以使用现有的 jQuery 函数意味着令人讨厌的迭代几乎消失了。

还有更多,但贯穿所有优势的核心思想是 John Resig 非常仔细地设计了 jQuery 对象/数组来接受传递的消息,而不是构建各种单体功能块,每个块都必须从头开始构建。

其他一些示例
Prototype 中的 AJAX 更新器

new Ajax.Updater('placeholder', url, { method: 'get', parameters: par });

jQuery 中的 AJAX 更新器

$('#placeholder').load(url + par);

**注意:**此示例没有处理如果我们想将响应加载到每个 <p> 对象中的明显迭代优势。

在 Prototype 中向元素添加类

Element.addClassName('element', 'className');

在 jQuery 中向元素添加类

$('#element').addClass('className');

在 Prototype 中向一组元素添加类

$$('.element').each(function(node) {
Element.addClassName(node, 'className');
}

在 jQuery 中向一组元素添加类

$('.element').addClass('className');

最后一个例子最清楚地体现了两种方法的区别。因为 jQuery 向 jQuery 对象传递消息,所以代码几乎没有变化。jQuery 不关心我们现在是向一组对象添加类还是向一个对象添加类;底层代码是一样的(将类添加到对象中的元素集合)。另一方面,Prototype 需要一个迭代器。

随着代码变得越来越复杂,jQuery 的扩展性很好,而像 Prototype 这样的框架则会以嵌套循环作为常态。

**[更新] **一位敏锐的读者(Mislav)指出,Prototype 确实做了一些 jQuery 做的事情。Prototype 似乎将 Element 类绑定到 DOM 元素,允许像 $(‘myElement’).hide() 这样的操作。但是,它只适用于 Element 模块,似乎只适用于单个 DOM 元素。绑定 Elements 模块很酷,但这更像是事后诸葛亮,而不是 jQuery 将其作为一项基本设计决策的方式。