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 发布两周年之际,我们很荣幸地向您推出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() 大修

文档就绪函数长期以来一直需要额外关注。我们进行了一些具体更改。

* Internet Explorer 文档就绪功能得到大幅改进。我们使用了一种新的技术,灵感来自 Diego Perini。它使我们不再需要进行 document.write(),这真是太棒了。
* 除了 DOM 之外,所有浏览器现在都将等待 CSS 就绪。实际上,这不再仅仅是普通的文档就绪 - 但我们发现,用户绝大多数情况下需要等待文档样式处于活动状态(例如,知道某个元素是否可见,或者它的高度是多少)。具体来说,我们对 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 标头

对于普通的 jQuery Ajax 操作,我们现在会发送一个额外的 Accept 标头,以让服务器知道我们正在寻找哪种类型的內容。如果您指定了一个 dataType 参数,那么我们会为您处理所有标头设置。我们目前针对每个 dataType 发送以下标头。

  • 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 操作
* 已解决一些内存泄漏

事件 API

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

jQuery 1.2.2 发布

发布日期: 作者:

这是一个针对 jQuery 1.2 的错误修复版本。您可以在错误跟踪器 上查看已修复内容的完整列表。

下载

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() 大修

文档就绪函数长期以来一直需要额外关注。我们进行了一些具体更改。

  • Internet Explorer 文档就绪功能得到大幅改进。我们使用了一种新的技术,灵感来自 Diego Perini。它使我们不再需要进行 document.write(),这真是太棒了。
  • 除了 DOM 之外,所有浏览器现在都将等待 CSS 就绪。实际上,这不再仅仅是普通的文档就绪 - 但我们发现,用户绝大多数情况下需要等待文档样式处于活动状态(例如,知道某个元素是否可见,或者它的高度是多少)。具体来说,我们对 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”)

我们有一个 [http://dev.jquery.com/browser/trunk/plugins/mousewheel/jquery.mousewheel.js 新的插件],由 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 标头

对于普通的 jQuery Ajax 操作,我们现在会发送一个额外的 Accept 标头,以让服务器知道我们正在寻找哪种类型的內容。如果您指定了一个 dataType 参数,那么我们会为您处理所有标头设置。我们目前针对每个 dataType 发送以下标头。

  • 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 操作
  • 已解决一些内存泄漏

事件 API

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