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

发布于 作者:

大家好,

jQuery 团队很荣幸地发布即将发布的 UI 版本的第一个 beta 版本,jQuery UI 1.5! 经过漫长的开发,最初的计划是发布一个 bug 修复版本,但它却发展成了一些我们无法称之为 1.0.1,甚至 1.1 的东西,不,它太美味了,我们必须称之为 1.5。

jQuery UI 1.5 是对库的彻底改造——许多组件都已从头完全重写,以提高整体稳定性和性能,并且我们终于确定了所有组件的统一 API。 那么让我们直接进入所有更改的列表

统一 API

API 已更新至所有 UI 组件。 如果您熟悉其中一个组件,现在应该很容易使用其他插件。 每个插件只有一个公开方法——所有其他方法都通过将字符串传递到公开方法来调用,插件的初始化是通过将选项哈希作为第一个参数传递来完成的。 您现在可以使用新的 data 方法在稍后更改和获取所有选项。 Draggable 的基本示例


$(..).draggable({...}); // 初始化 draggable
$(..).draggable("disable"); // 禁用 draggable
$(..).data("cursor.draggable", "move") // 将拖动期间的鼠标光标更改为 'move'

更新和修订的文档

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

拖放:吸附、相对拖动

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

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

此外,还添加了一个新的选项插件:snap 插件。 还记得 Winamp 窗口的停靠吗? 是的,您现在可以使用 UI draggables 执行此操作——只需将“snap”设置为选择器以选择所有要吸附的元素,您就可以开始了。 当然,您还可以使用 snapTolerance 和 snapMode 根据需要进行配置。

Slider:范围、多个手柄和可访问性

Slider 没有重构,但已从头完全重写。 虽然它仍然几乎向后兼容,但现在它比以往任何时候都更稳定、更简单:moveTo 方法现在仅接受两个参数:您想要移动手柄到的值以及可选的手柄索引。 想检索特定的手柄值? 没问题,只需调用$(..).slider(“value”, index)

更好的是,slider 现在是完全键盘可访问的:您现在可以选项卡并聚焦每个 slider 手柄,并使用左/右键移动其位置。 我们还改进了鼠标支持:单击空区域现在会将焦点手柄移动到单击的位置,无论您有多少个手柄。

对于那些正在寻找高级用法的人来说,slider 现在支持范围:只需将选项“range”设置为 true 并确保您有两个手柄,脚本就会在这两个 slider 之间创建一个可见的范围,可以单独设置样式。 该脚本甚至确保您无法创建负范围。

Sortables:连接的 sortables、序列化等

同样经过重写,sortables 现在支持您已经从 draggables 中了解的各种功能:cursor、zIndex、revert、opacity、axis、handles、containmentscrolling。 此外,您现在可以将项目序列化为 url 哈希,并且您现在拥有长期以来要求的将多个 sortables 连接起来的能力,以便您可以将一个节点从一个 sortable 拖动到另一个 sortable。

还有更多!

这只是我个人参与的插件的摘录——最终版本将附带官方更改日志——但大多数其他插件也经过了重构,具有大量的全新功能,包括 datepicker、tabs、accordion、resizables 等。

……以及更少!

为我们的姊妹库 Enchant 做好准备,我们删除了 magnifier 和 shadow 插件并将其移动到 Enchant。 不用担心,您可以在我们的 SVN trunk 下的 trunk/fx 中找到它们。 此外,由于 API 和路线图不兼容,table sorter 组件已被删除。 很快将有一个网格组件,其中包含其大部分功能。

……以及无数的 bug 修复

我们可以为自己创造便利,只需重写所有内容并删除 1.0 的所有 bug 报告,因为不可能再追踪它们了,但我们没有这样做:所有针对 1.0 版本收到的问题都已得到处理和解决。

有关此版本中所有更改的内容,请参阅文档或在代码中查找。 请记住,这是一个 beta 版本——预计会出现错误和不稳定(但比 1.0 更好:P)。 此外,如果您报告任何问题到我们的bug tracker,对我们来说将是一大帮助。

现在去这里获取它:http://ui.jquery.com 或直接从我们的 google code 页面:jquery.ui-1.5b.zip。 对于此版本,我们已停用下载器——因此请下载 zip 包并包含您需要的内容。 您可以在文档中阅读依赖项。

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

大约两周后见!

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

发布于 作者:

我们很高兴地宣布jQuery 的全新版本。 这主要是对jQuery 1.2的一个 bug 修复版本。 您可以在bug tracker上查看修复的完整列表。

下载

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 中的 draggables

  $(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 的新插件,它将为库带来大量的高级效果(例如clipshakeexplode – 仅举例几个)。 这也是该插件的 alpha 版本——因此请帮助我们测试它并确保它完全符合 jQuery 的质量水平。

下载

演示

尽情享受吧!

jQuery 1.2.3 发布

发布于 作者:

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

下载

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 中的 draggables

  $(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 Core (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 邮件列表 中大约在同一时间宣布。

转载自我的博客。