jQuery UI 及未来:jQuery-Liferay 合作

发布于 作者:

jQuery UI 正在发展,我已经看到很多网站专门使用它来支持他们的界面。事实上,它发展得如此之好,以至于一家位于洛杉矶的开源公司决定雇佣一个人全职致力于 jQuery UI 的开发

我很高兴地宣布,我,Paul Bakaus,jQuery UI 的负责人,被 Liferay Inc. 雇佣,该公司是世界上最流行的开源 Java 门户的创建者,专门致力于将 jQuery UI 提升到一个新的水平。这对整个项目都有巨大的影响——我现在可以投入几乎三倍的时间和精力,并且我正在帮助在关键任务项目中部署 jQuery 和 jQuery UI,这产生了巨大的影响。

Liferay 的计划是将所有产品标准化为使用 jQuery 及其插件(您仍然可以同时使用其他库)——因此,看到 jQuery UI 拥有长久的发展,并满足各种客户的需求,对他们来说至关重要。为了实现这个目标,雇佣我是一个最合乎逻辑的决定:我现在没有理由不专注于 jQuery UI 一段时间——毕竟,这是我的日常工作!

但是与 Liferay 的合作远不止于此:Liferay 将是从今天开始,第一家为 jQuery 和 jQuery UI 提供关键业务支持服务的公司。我们不仅拥有一个开源公司支持我们,而且这是项目能获得的最好的宣传:jQuery UI 将在巨大的内部网中运行,在每个 Liferay 的副本上运行。这将对项目的分发和提供的质量水平产生强烈的影响。

我本人对这次变化感到非常兴奋——有无数积极的副作用和产品即将推出——包含 jQuery 的新产品、UI 的赞助主题、一个新网站,当然还有——jQuery UI 的新版本(新版本发布日期,包含所有期待已久的错误修复,将在未来几天内公布)。

jQuery 1.2.2:第二次生日礼物

发布于 作者:

在 jQuery 发布 2 周年的之际,我们很荣幸地为您带来一个 全新的 jQuery 版本。这主要是对 jQuery 1.2 的错误修复版本。您可以在 错误跟踪器 上查看所有已修复问题的完整列表。

下载

jQuery 1.2.2:

如果您希望从 Subversion 仓库 中检出完整版本,您可以按照 以下说明 从以下位置检出源代码

svn co http://jqueryjs.googlecode.com/svn/tags/1.2.2

重要变更

Brandon Aaron 和 David Serduke 为此版本付出了大量的努力。David 是 jQuery 核心开发团队的新成员,并做出了重大贡献——请大家欢迎他!

主要来说,这是一个错误修复和优化版本。我们修复了超过 120 个错误,我们的测试套件现在包含了超过 1157 个测试用例——我们为此感到非常自豪。

$(DOMElement) 速度提升 300%

我们再次对 jQuery 中最常用的功能进行了微小的改进。特别是,将 DOM 元素传递给 jQuery 函数的操作。(您经常会在代码中看到类似 $(this) 的用法。)

以下是您可以期望在所有主要浏览器中获得的加速的快速一览

浏览器 1.2.1 (毫秒) 1.2.2 (毫秒)
Firefox 2 0.041 0.015
Firefox 3 0.033 0.01
Safari 3 0.017 0.005
Opera 9 0.023 0.004
Internet Explorer 6 0.04 0.03

.ready() 大幅改进

document ready 函数长期以来一直需要更多的关注。我们做了一些具体的更改。

* Internet Explorer 文档就绪速度大大提高。我们使用 Diego Perini 启发的一种新技术。它允许我们不再使用 document.write(),这真是太棒了。
* 现在所有浏览器都会等待 CSS 就绪,而不仅仅是 DOM。实际上,它不再只是一个普通的文档就绪事件——但我们发现用户迫切需要等待文档样式处于活动状态(例如,知道元素是否可见,或者它的高度是多少)。特别是,我们对 Safari 和 Opera 进行了改进,使其成为可能。
* $(document).bind("ready", fn); – 您现在可以使用传统的 .bind() 函数来监视文档就绪事件。当然,.ready() 仍然像您期望的那样工作。

.bind(“mouseenter”) / .bind(“mouseleave”)

.hover() 函数的核心功能被拆分为两个新的跨浏览器事件:mouseenter 和 mouseleave。这些与 mouseover 和 mouseout 不同,因为那些事件会在您移动到子元素时触发(通常这不是期望的行为)。例如,以下两者在 jQuery 1.2.2 中都是有效的并且可以完美运行

$("li").hover(function(){
  $(this).addClass("hover");
}, function(){
  $(this).removeClass("hover");
});
$("li").bind("mouseenter", function(){
  $(this).addClass("hover");
}).bind("mouseleave", function(){
  $(this).removeClass("hover");
});

.bind(“mousewheel”)

我们有一个 新插件,由 Brandon Aaron 编写,基于新的事件 API,它为 jQuery 核心添加了鼠标滚轮事件支持。这将允许您编写如下内容

$("div").bind("mousewheel", function(event, delta){
  if ( delta < 0 )
    $(this).append("up");
  else
    $(this).append("down");
});

复杂的 :not()

虽然它不是 CSS 3 规范的一部分,但一直是一个常见的特性请求——因此,您现在可以在 :not() 选择器中使用复杂的表达式。例如,以下现在可以工作

$(".hover:not(li.active)")
$("li:not(.active,.hover,:contains(test))")

Accept Headers

对于正常的 jQuery Ajax 操作,我们现在会发送一个额外的 Accept header,让服务器知道我们正在寻找什么类型的内容。如果您指定 dataType 参数,我们将为您处理所有的 header 设置。我们当前为每个 dataType 发送以下 header。

  • xml "application/xml, text/xml"
  • html "text/html"
  • script "text/javascript, application/javascript"
  • json "application/json, text/javascript"
  • text "text/plain"
  • 其他所有: "*/*"

错误修复

以下是一些经过重要改进的功能示例。

* .clone() 彻底改进
* 脚本评估彻底改进
* height() / width() 彻底改进
* 跨框架 DOM 操作
* 解决了一些内存泄漏问题

Event API

有一个新的 API 用于处理事件。您现在可以创建自己的自定义事件类型(具有自定义的设置和拆卸方式)。实际上,它允许您超越简单的事件触发,并创建一个完整的方案,用于附加、处理和拆卸元素上的事件。Brandon Aaron 创建了一个 演示插件,您可以用来学习强大的新 API。

jQuery 1.2.2 发布

发布于 作者

这是 jQuery 1.2 的一个 bug 修复版本。 您可以在bug tracker上查看修复的完整列表。

下载

jQuery 1.2.2

重要变更

Brandon Aaron 和 David Serduke 为此版本付出了大量的努力。David 是 jQuery 核心开发团队的新成员,并做出了重大贡献——请大家欢迎他!

主要来说,这是一个错误修复和优化版本。我们修复了超过 120 个错误,并且我们的测试套件现在包含了超过 1157 个测试用例——我们为此感到非常自豪。

$(DOMElement) 速度提升 300%

我们再次对 jQuery 中最常用的功能进行了微小的改进。特别是,将 DOM 元素传递给 jQuery 函数的操作。(您经常会在代码中看到类似 $(this) 的用法。)

以下是您在所有主流浏览器中可以期待的速度提升的快速预览

浏览器 1.2.1 (毫秒) 1.2.2 (毫秒)
Firefox 2 0.041 0.015
Firefox 3 0.033 0.01
Safari 3 0.017 0.005
Opera 9 0.023 0.004
Internet Explorer 6 0.04 0.03

.ready() 大幅改进

document ready 函数长期以来一直需要更多的关注。我们做了一些具体的更改。

  • Internet Explorer document ready 大幅改进。我们使用了一种由 Diego Perini 启发的新的技术。它使我们不再需要使用 document.write(),这真是太棒了。
  • 现在所有浏览器都会等待 CSS 加载完毕,而不仅仅是 DOM。实际上,这不再仅仅是一个普通的 document ready 了——但我们发现用户们迫切需要等待文档样式激活(例如,知道一个元素是否可见,或者它的高度是多少)。特别是,我们对 Safari 和 Opera 进行了改进,以实现这一点。
  • $(document).bind("ready", fn); – 您现在可以使用传统的 .bind() 函数来监听 document ready 事件。当然,.ready() 仍然像您期望的那样工作。

.bind(“mouseenter”) / .bind(“mouseleave”)

.hover() 函数的核心功能被拆分为两个新的跨浏览器事件:mouseenter 和 mouseleave。这些与 mouseover 和 mouseout 不同,因为那些事件会在您移动到子元素时触发(通常这不是期望的行为)。例如,以下两者在 jQuery 1.2.2 中都是有效的并且可以完美运行

$("li").hover(function(){
  $(this).addClass("hover");
}, function(){
  $(this).removeClass("hover");
});
$("li").bind("mouseenter", function(){
  $(this).addClass("hover");
}).bind("mouseleave", function(){
  $(this).removeClass("hover");
});

.bind(“mousewheel”)

我们有一个 [http://dev.jquery.com/browser/trunk/plugins/mousewheel/jquery.mousewheel.js 新插件],由 Brandon Aaron 编写,基于新的 Event API,它为 jQuery 核心添加了 mousewheel 事件支持。这将允许您编写类似的代码

$("div").bind("mousewheel", function(event, delta){
  if ( delta < 0 )
    $(this).append("up");
  else
    $(this).append("down");
});

复杂的 :not()

虽然它不是 CSS 3 规范的一部分,但一直是一个常见的特性请求——因此,您现在可以在 :not() 选择器中使用复杂的表达式。例如,以下现在可以工作

$(".hover:not(li.active)")
$("li:not(.active,.hover,:contains(test))")

Accept Headers

对于正常的 jQuery Ajax 操作,我们现在会发送一个额外的 Accept header,让服务器知道我们正在寻找什么类型的内容。如果您指定 dataType 参数,我们将为您处理所有的 header 设置。我们当前为每个 dataType 发送以下 header。

  • xml "application/xml, text/xml"
  • html "text/html"
  • script "text/javascript, application/javascript"
  • json "application/json, text/javascript"
  • text "text/plain"
  • 其他所有: "*/*"

错误修复

以下是一些经过重要改进的功能示例。

  • .clone() 大幅改进
  • Script 评估大幅改进
  • height() / width() 大幅改进
  • 跨框架 DOM 操作
  • 解决了一些内存泄漏问题

Event API

有一个新的 API 用于处理事件。您现在可以创建自己的自定义事件类型(具有自定义的设置和销毁方式)。实际上,它允许您超越简单的事件触发,并创建一个完整的方案,用于附加、处理和销毁元素上的事件。Brandon Aaron 创建了一个 [http://dev.jquery.com/browser/trunk/plugins/mousewheel/jquery.mousewheel.js 演示插件],您可以用来学习强大的新 API。