大家好!
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 变为 delay,preventionDistance 变为 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 包并包含您需要的部分。您可以在文档中了解依赖项。
感谢所有让此版本成为可能的贡献者——我会在最终的发行说明中单独感谢你们每个人,我太懒了,不想重复做两次 :)
大约两周后再见!