jQuery UI 1.5b:新的 API,更多功能,性能大幅提升

发表时间 作者

大家好!

jQuery 团队很高兴发布即将推出的新版 UI 的第一个测试版,jQuery UI 1.5!发布这款软件是一个漫长的过程,最初计划只是一个 bug 修复版本,但它逐渐发展成为我们不能称之为 1.0.1 的东西,甚至不能称之为 1.1,不,它太棒了,我们不得不称之为 1.5。

jQuery UI 1.5 是对该库的全面改造——许多组件从头开始进行了重写,以提高整体稳定性和性能,我们终于成功地为所有组件确定了一个统一的 API。所以让我们直接进入所有更改的列表。

统一 API

所有 UI 组件的 API 都已更新。如果您熟悉其中一个插件,现在应该很容易使用其他插件。每个插件只有一种公开方法——所有其他方法都是通过将字符串传递给公开方法来调用的,插件的初始化是通过在第一个参数中传递选项散列来完成的。如果您需要,现在可以通过使用新的数据方法来更改和获取所有选项。拖放的基本示例


$(..).draggable({...}); // 初始化可拖动元素
$(..).draggable("disable"); // 禁用可拖动元素
$(..).data("cursor.draggable", "move") // 在拖动过程中将光标更改为“移动”

更新和修订的文档

jQuery Wiki 中的文档已完全更新以反映最近的更改。我们还确保这次记录了所有回调及其参数。

拖放:捕捉、相对拖放

可拖动元素和可放置元素已完全重构。这可能是最无损的拖放实现:css position 的值不会更改,除非是“static”:这意味着,静态或相对定位的元素不会被强制为绝对定位,这通常会导致布局破坏,尤其是在处理浮动元素时。

一些选项已重命名,以便更好地识别:preventionTimeout 变为 delaypreventionDistance 变为 distance

此外,添加了一个新的选项插件:捕捉插件。还记得 Winamp 窗口的停靠吗?现在,您可以使用 UI 可拖动元素实现这种效果——只需将“snap”设置为一个选择器,以选择您想要捕捉的所有元素,然后您就可以开始使用了。当然,您也可以使用 snapTolerance 和 snapMode 根据您的需要进行配置。

滑块:范围、多个滑块和辅助功能

滑块并没有重构,而是从头开始进行了完全重写。虽然它仍然几乎向后兼容,但它现在非常稳定,并且比以往任何时候都更加简单:moveTo 方法现在只需要两个参数:您想要将滑块移动到的值,以及可选的想要移动的滑块的索引。想要检索特定滑块的值?没问题,只需调用 $(..).slider(“value”, index) 即可。

更棒的是,滑块现在完全可以通过键盘访问:您可以单独地将焦点放在每个滑块上,并使用左右键移动其位置。我们还改进了对使用鼠标的支持:现在,点击空白区域会将焦点滑块移动到点击的位置,无论您有多少个滑块。

对于那些寻求高级使用方法的用户,滑块现在支持范围:只需将选项“range”设置为 true,并确保您有两个滑块,脚本将在这两个滑块之间创建可见的范围,该范围可以单独设置样式。脚本甚至可以确保您不能创建负范围。

可排序列表:连接的可排序列表、序列化等

可排序列表也进行了重写,现在支持您在可拖动元素中已知的各种功能:光标、zIndex、还原、不透明度、轴、手柄、限制滚动。除此之外,您现在可以将项目序列化为 URL 散列,并且您现在有了经常被请求的功能,可以连接多个可排序列表,因此您可以将一个节点从一个可排序列表拖动到另一个可排序列表。

还有更多!

这只是我个人参与的插件的一个摘录——最终版本将附带官方变更日志——但大多数其他插件也进行了重构,在日期选择器、选项卡、手风琴、可调整大小元素等中添加了大量新功能。

... 和更少!

为了准备我们的姊妹库 Enchant,我们移除了放大镜和阴影插件,并将它们移动到 Enchant 中。别担心,您可以在我们的 SVN 主干中找到它们,位置在 trunk/fx 下。此外,由于 API 和路线图的不兼容,表排序组件已删除。很快将有一个网格组件,其中包含其大部分功能。

… 以及无数错误修复

我们可以让事情变得简单,只需重写所有内容,并删除 1.0 的所有错误票证,因为无法再追踪了,但我们没有这样做:针对 1.0 版本的所有问题都得到了解决。

有关此版本中所有更改的内容,请参阅文档或在代码中查找。请记住,这是一个测试版——预期会出现错误和不稳定(但比 1.0 好 :P)。此外,如果您向我们的错误追踪器报告任何问题,您将帮我们大忙。

现在,请从这里获取它:http://ui.jquery.com,或直接从我们的谷歌代码页面获取:jquery.ui-1.5b.zip。对于此版本,我们禁用了下载器——因此请下载 zip 包并包含您需要的部分。您可以在文档中了解依赖项。

感谢所有让此版本成为可能的贡献者——我会在最终的发行说明中单独感谢你们每个人,我太懒了,不想重复做两次 :)

大约两周后再见!

jQuery 1.2.3:AIR、命名空间和 UI Alpha

发表时间 作者

我们很高兴宣布jQuery 的全新版本。这主要是一个针对jQuery 1.2 的 bug 修复版本。您可以在错误追踪器上查看修复内容的完整列表。

下载

jQuery 1.2.3

如果您希望从Subversion 存储库签出完整版本,您可以按照说明操作,并从以下位置签出源代码

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

重要更改

此版本的主要目的是修复jQuery 1.2.2 版本中的一些未解决的 bug。具体而言,此版本现在与 Adobe AIR 兼容,将包含在 Drupal 6 中,并将成为 jQuery UI 1.5 的基础。此外,此版本还包含针对插件开发人员的一些次要功能。

.data() 和 .removeData()

这些方法补充了在jQuery 1.2 中引入的jQuery.datajQuery.removeData 方法。然而,重要的变化是,它们已针对插件开发人员进行了定制。您现在可以对数据添加进行命名空间——就像您对事件绑定/解绑那样。例如

  $("div").data("test", "original");
  $("div").data("test.plugin", "new data");
  alert( $("div").data("test") == "original" ); // true
  alert( $("div").data("test.plugin") == "new data" ); // true

此外,获取或设置数据值可以被插件覆盖。例如,以下代码来自最近更新的 jQuery UI 中的可拖动元素

  $(element).bind("setData.draggable", function(event, key, value){
     self.options[key] = value;
  }).bind("getData.draggable", function(event, key){
     return self.options[key];
  });

上面代码使所有尝试获取和设置命名空间为 draggable 的数据都会被拦截并由插件直接处理(而不是直接绑定到元素)。结果是,为处理插件内部数据提供了一个强大的新接口。

.unbind(“.namespace”)

在 jQuery 1.2 中,您可以添加和删除命名空间事件,但是您始终必须包含要使用的事件类型名称。通过添加此功能,您现在可以删除所有与特定命名空间匹配的绑定事件,例如

  $("div").bind("click.plugin", function(){});
  $("div").bind("mouseover.plugin", function(){});
  $("div").unbind(".plugin"); // All handlers removed

上面代码会删除所有位于“plugin”命名空间中的绑定事件处理程序。

.trigger(“click!”)

最后,添加了一个新功能,允许排除命名空间事件不被触发。例如

  $("div").bind("click", function(){ alert("hello"); });
  $("div").bind("click.plugin", function(){ alert("goodbye"); });
  $("div").trigger("click!"); // alert("hello") only

上面代码只会触发非命名空间事件处理程序。

Alpha 版本:jQuery UI 1.5 和 jQuery Enchant 1.0

最后,但并非最不重要的一点,我们很高兴宣布jQuery UI 的新 Alpha 版本。这是对现有代码库的全面改造,包含大量 bug 修复和 API 调整。我们需要大量帮助来测试此 Alpha 版本,确保它能够在即将到来的候选版本中稳定运行。请参与讨论,帮助我们做好准备。

此外,我们正在开发一个名为 jQuery Enchant 的新插件,它将为该库带来大量高级效果(例如剪切摇晃爆炸——仅举几例)。这也是该插件的 Alpha 版本——因此请帮助我们测试它,确保它完全达到 jQuery 的质量水平。

下载

演示

享受!

jQuery 1.2.3 发布

发表时间 作者

这是 jQuery 1.2 的 bug 修复版本。您可以在错误追踪器上查看修复内容的完整列表。

下载

jQuery 1.2.3

.data() 和 .removeData()

这些方法是对 jQuery 1.2 中引入的 jQuery.data 和 jQuery.removeData 方法的补充。然而,重要的是它们已经为插件开发者量身定制。现在你可以为数据添加命名空间,就像你对事件绑定/解除绑定一样。例如

  $("div").data("test", "original");
  $("div").data("test.plugin", "new data");
  alert( $("div").data("test") == "original" ); // true
  alert( $("div").data("test.plugin") == "new data" ); // true

此外,获取或设置数据值可以被插件覆盖。例如,以下代码来自最近更新的 jQuery UI 中的可拖动元素

  $(element).bind("setData.draggable", function(event, key, value){
     self.options[key] = value;
  }).bind("getData.draggable", function(event, key){
     return self.options[key];
  });

上面代码使所有尝试获取和设置命名空间为 draggable 的数据都会被拦截并由插件直接处理(而不是直接绑定到元素)。结果是,为处理插件内部数据提供了一个强大的新接口。

.unbind(“.namespace”)

在 jQuery 1.2 中,你可以添加和删除带命名空间的事件,但是你总是必须包含正在使用的事件类型的名称。有了这个补充,现在你可以删除所有与特定命名空间匹配的绑定事件,例如

  $("div").bind("click.plugin", function(){});
  $("div").bind("mouseover.plugin", function(){});
  $("div").unbind(".plugin"); // All handlers removed

上面代码会删除所有位于“plugin”命名空间中的绑定事件处理程序。

努力工作

发布日期: 作者:


Paul Bakaus(jQuery UI 负责人)和 John Resig(jQuery 负责人)正在开发
jQuery UI 的下一个版本 (1.5) 和 jQuery 核心 (1.2.3)。

在分布式开源开发中,能够与其他开发人员面对面工作是一种难得的待遇。Paul 位于德国,我在波士顿,而 jQuery 团队的大部分成员分布在全球各地。他周末来到城里,这样我们就能确保所有必要的代码都包含在即将发布的 jQuery UI 1.5 版本候选版本中。我们还讨论了 jQuery UI 的未来,并规划了未来几个月的一些最佳资源分配方案。

话虽如此,下一个版本将会很棒。这是 jQuery UI 1.0 本应该的样子。它一直很艰难,因为在我们最初开始这个项目时,开发者的时间受到了限制,但情况正在好转。 Paul 现在全职负责 jQuery UI,而 Liferay 正在投入大量资源来确保该库的未来成功。看到这个项目成长起来,开始看到曙光,真是令人激动。

jQuery 1.2.3 应该会在未来几天内发布(经过更多测试之后),jQuery UI 1.5rc1 将在 jQuery UI 邮件列表 上宣布。

转载自我的博客。