jQuery UI 1.9 里程碑 7 – 手风琴

发布日期: 作者:

jQuery UI 1.9 的第七个里程碑版本发布了。自上次里程碑版本发布以来已经过去了七个月,我们有很多改进和错误修复要分享。最值得注意的是,手风琴小部件的重新设计已经完成。

什么是里程碑版本?

里程碑版本让您更容易尝试 jQuery UI 的最新开发代码,而不必从 GitHub 中签出代码。

使用里程碑版本,您可以尝试新的、进展相当快的(虽然还没有最终确定)的小部件,并根据具有特定版本号的已发布代码提供反馈。

手风琴

手风琴的重新设计现已完全实现。我们终于有了真正稳定的动画,不再有闪烁或下方内容跳动的情况。ARIA 的实现也得到了很大的改善。要特别感谢 Hans Hillen 的贡献。

菜单

菜单现在支持除 UL/LI 元素之外的其他标记。对禁用菜单项的支持也得到了很大的改善。

大量错误修复

许多组件都进行了大量的错误修复。虽然我们继续维护 1.8 分支,但许多错误只在主分支中得到修复。 以下是 1.9 中按组件修复的所有问题

下载

您可以下载 jQuery UI 1.9 里程碑 7 – 手风琴版本,以 zip 文件形式或通过 git 获取。

文件下载

Git

如何提供反馈

wiki 页面

要帮助测试手风琴小部件,请访问我们 开发和规划 wiki 上的 手风琴页面

论坛

如果 wiki 页面上的评论部分没有提供足够的反馈空间,请发布到 开发 jQuery UI 论坛 并为帖子添加标签

如何贡献代码

如果您对手风琴小部件有代码更改,请 fork GitHub 上的 jQuery UI 并提交拉取请求。

如果您不熟悉 git 或 GitHub,请参阅我们的指南: 如何向 jQuery UI 提交修复程序 - 简单方法

评论

注意: **请勿使用此博客文章的评论部分来反馈手风琴小部件。** 该讨论应该在 wiki 页面和论坛上进行(请参阅上面的“如何提供反馈”)。

如果您对我们发布第六个里程碑版本有任何反馈,请随时在下面发表评论。谢谢。

jQuery UI 网格的状态

发布日期: 作者:

我们在 2 月份 宣布了网格项目。从那时起,我们完成了前三个阶段,现在正在开始第四个阶段。在本文中,我们将看看我们到目前为止所构建的内容。

网格

这就是我们设计为“零功能网格”的内容。它只增强 HTML 表格,但它做得很好,同时还为我们可以在其之上添加的各种其他功能提供了正确的挂钩。事实证明,这非常有用,因为有很多事情是普通的 HTML 表格做不到的。使用网格,您将获得

  • 使用 CSS 框架进行样式设置,使其支持 ThemeRoller
  • 基于表格标题的适当标题栏
  • 用于滚动表格主体的标记和样式,同时保持标题固定

网格的 API 控制要渲染的内容以及如何呈现内容

  • **columns** 选项指定要渲染的列。如果未指定,它将选取现有的表格标题元素。
  • **rowTemplate** 选项允许网格从自定义模板渲染每一行。如果未提供此选项,则将根据 columns 选项生成每一行。
  • **source** 选项指定要渲染的内容,以普通对象数组的形式。如果未指定,则使用现有的表格行。
  • 默认情况下,网格的主体随着行数的增加而增长。使用 **heightStyle**: ‘fill’ 时,它将保持固定高度,如果还有更多行,则主体将开始滚动。
  • 当从现有的表格标题中获取列信息时,会读取某些 data-属性。网格本身只使用 data-property 属性(以及每个标题单元格的实际文本),但 **dataFields** 选项指定了其他组件可以使用的一些其他属性,例如“type”,“culture” 和“format”,以配置本地排序和筛选。如果网格附加组件处理其他 data 属性,则将它们添加到 dataFields 选项中将使它们作为 columns 选项的一部分自动可用。

到目前为止,我们只有 一个增强的表格,但很多时候,网格需要从某个远程资源中获取数据。这就是 Dataview 派上用场的地方。

Dataview

Dataview 是用于检索内容的低级抽象。它有一个用于指定要检索的内容的 API 和一个 SPI(服务提供者接口),由提供该内容的组件实现。内置选项用于筛选、排序和分页,并且设计使添加更多选项(如分组)变得容易。API 默认情况下是异步的,即使对于本地数据也是如此,因此所有依赖 Dataview 的组件都可以与本地数据和远程数据一起使用。

Dataview 仅依赖于 Widget 和 Observable(我们将在下面介绍),但不依赖于 Grid。这允许 Dataview 在各种情况下使用。例如,它可以为产品列表提供支持,例如 eBay 或 Amazon 上的产品列表,其中表格表示形式不是正确的格式。

Dataview SPI 使从头开始编写实现以及创建可重用扩展变得容易。

例如,我们可以使用 自定义 dataview 作为自动完成小部件的输入。相同的数据也会显示在输入字段下方的网格中。这演示了 Dataview 如何在多个表示形式中使用,其中每个表示形式都自行决定显示什么数据。

至于可重用扩展,我们目前已经实现了三个

  1. localDataview 获取输入数组并对该数组进行排序、分页和筛选。它使用 Globalize(见下文)来实现本地化数字和日期的筛选和排序。当与表格中的网格结合使用时,表格中包含现有内容(没有指定 source 选项),您将获得 一个完整的表格排序器
  2. odataDataview 获取一个资源 URL,指向理解 OData,开放数据协议 的 Web 服务。虽然我们的实现还没有涵盖所有 OData 选项,但您可以使用它来排序、筛选和分页,而无需实现任何自定义请求/响应映射。我们有一个 使用基于 OData 的 Netflix API 的网格示例
  3. preloaderDataview 包装一个 Dataview 并调整分页行为,以加载比渲染的更多数据,在预加载另一批之前本地分页。在这个 Flickr API 幻灯片示例 中,我们预加载了 API 响应和实际图像。这将所有加载推送到后台,允许用户在没有中断的情况下浏览图像。

所有这三个都需要在实际项目中进行测试,然后我们才能认为它们是稳定的。我们还在寻找 Dataview 的其他用例,这些用例我们可能错过了。

Observable

数据绑定目前是较新 JavaScript 框架中的一个普遍主题,有各种竞争解决方案可用。我们还没有一个功能齐全的替代方案,但我们开发了一个低级抽象,它可能会在未来为数据绑定组件提供支持。我们称这个抽象为 Observable。它提供了一个 API,用于对可以被观察到的普通 JavaScript 对象和数组进行更改,这些对象和数组可以监听每个更改触发的事件。我们设计 Observable 的目的是使其具有非常少的方法和事件,以便于在其他上下文中实现相同的 API。这些事件是

  • change:在一个或多个属性更改后,在对象上触发。
  • insert:在插入一个或多个新项目后,在数组上触发。
  • remove:在删除一个或多个项目后,在数组上触发。
  • replaceAll:在替换数组中的所有项目后,在数组上触发。

最后一个事件乍一看可能很奇怪,但这样就可以创建一个 dataview,将其传递给网格,让网格订阅该 dataview 输出数组上的事件,然后在 dataview 更新时更新自身。

对于所有四个事件,Observable 提供了方法对应项

  • property:用于处理对象
  • insert、remove 和 replaceAll:用于处理数组。

两种情况下的用法都是一致的

  • $.observable( object ).property( “name”, “Fred” );
  • $.observable( array ).insert({ name: “Peter” });

我们仍在研究 Observable。下一步是找到数组绑定的抽象,这将减少网格以及 todo-app 演示 的一些开销。

当将 Observable 与网格结合使用时,我们可以轻松地添加编辑功能。 在我们的网格编辑演示 中,您可以添加、编辑和删除表格中的开发人员。结果通过 localStorage 保持。

与其添加包含“编辑”和“移除”按钮的自定义列,我们可以使用可选择交互来选择一个或多个行,然后与选择进行交互。在该演示中,selected 数组也是一个可观察数组,第二个网格显示了该数组。请注意,您可以选择一页上的行,然后转到下一页(您可能需要添加一些开发人员才能显示第二页),使用命令/ctrl 键单击(扩展选择)来选择更多行,它将在第二个网格中显示所有这些行。选择状态与视觉表示分离,使得跨多个页面进行选择变得非常容易。

全球化

Globalize 最初是作为 jquery-global 插件开始的。我们将其重写为网格项目的一部分,使其独立于 jQuery,允许在客户端和服务器 上使用。我们的 localDataview 实现(如上所述)使用它,它也是自定义输入(如SpinnerTimepicker)背后的技术。

MaskTimepickerSelectmenu

这三个自定义输入正在作为网格项目的一部分进行开发。它们旨在用于网格内的内联编辑,以及独立于常规表单或网站中使用。我们即将完成所有三个输入的开发,并将它们作为 1.9 版本的一部分发布。

还有更多……

我们仍在开发TemplateDatepicker 和其他自定义输入。一旦我们有了更稳定的解决方案,我们将发布相关信息。

下一步

我们正在完成现有的组件,并开始第四阶段。有关详细信息,请查看网格维基主页面

那么,什么时候完成呢?

我们的路线图 将网格列入 2.1 版本,而 jQuery UI 的主要重点是 1.9 版本。换句话说,在我们能够将网格发布为稳定版本并与所有其他组件一起提供支持之前,还有很多工作要做。同时,我们鼓励您现在开始测试上述功能。网格、可观察和 Dataview 都非常稳定,运行良好。Globalize 是一个独立的项目,如果您希望在客户端支持本地化数字和日期处理,您现在应该开始使用它。

我们重视您的意见和帮助。请使用开发 jQuery UI 论坛,对各个维基页面发表评论,或访问我们的 IRC 频道(Freenode 上的 #jqueryui-dev)。如果您找到了解决问题的方法,请提交拉取请求

ARIA 黑客马拉松总结

发布日期: 作者:

ARIA 黑客马拉松的最初想法是将 jQuery UI 的开发人员和 ARIA 专家聚集在一个房间,让他们互相交流,分享知识,并共同努力提高 jQuery UI 的可访问性。

在多伦多 OCAD 大学的包容性设计研究中心 (IDRC) 会面时,几位 jQuery UI 团队成员(Richard、Scott、Dan、Jörn)、OCAD 的多位开发人员(Michelle、Justin、Antranig、Harris)、多伦多地区(Ates、George、Darcy)以及更远的地方(来自波士顿的 Mat、来自华盛顿大学的 Candace 和 William 以及来自伊利诺伊大学的 Jerry)学习了大量有关为屏幕阅读器用户进行测试和开发的知识,了解了 ARIA 标准及其流程,以及 Mozilla 在可访问性方面的努力。

  • Colin Clark 概述了 IDRC 团队的工作,包括使用 jQuery UI 的 Fluid 项目。
  • Hans Hillen 提供了许多关于使用 JAWS 和 NVDA 进行测试和开发以及 ARIA 规范和 DHTML 样式指南的非常实用的见解。
  • Jospeh Scheuhammer 深度参与了 ARIA 标准流程,他介绍了该流程的工作方式、如何提供反馈以及除了主要规范之外可以使用和应该使用的哪些文档。
  • David Bolter 概述了 Mozilla 在 Firefox 可访问性方面的努力,也涵盖了 Firefox Mobile 的现状和未来。
  • 最后,Jennison Asuncion 展示了在普通网站上使用 JAWS,让观众(或者更确切地说,是听众)更好地理解盲人用户如何实际使用屏幕阅读器。他也是一个非常友善的人。

在小组讨论中,我们定义了最新的 NVDA 与最新的 Firefox 作为 ARIA 和可访问性的支持设置,同时也在 Windows 上的 JAWS 和 OSX 上的 VoiceOver 上进行测试。如果代码可维护且不会破坏符合规范的 AT 中的 ARIA,我们将接受针对其他或旧版 AT 的合理补丁。

在为期两天的主要活动结束后,Hans 和 Jörn 留到了星期五,以处理多个 jQuery UI 小部件的键盘和可访问性实现。Jörn 还与 OCAD 的 Justin 和 Michelle 以及 Mozilla 的 Bobby 和 David 进行了会面,以招募他们加入 jQuery UI 和测试子团队 (QUnit、TestSwarm)。双方都有很多共同的兴趣,这应该会导致未来更多的合作。

特别感谢 IDRC 和 Colin Clark 主办了此次活动,并感谢 Mozilla 和 David Bolter 为部分旅行和住宿费用提供了资金。

有关与会者的大致完整列表(以及指向 Twitter 和 GitHub 档案的链接)以及活动期间收集的各种资源,请访问我们规划维基上的活动页面

jQuery UI 1.9 里程碑版本 3 - Spinner

发布日期: 作者:

jQuery UI 1.9 的第三个里程碑版本已经发布,其中包含正在积极开发的新 Spinner 小部件。它还包括自我们的第二个里程碑版本 以来对 Tooltip 和 Menu 小部件的更新。

什么是里程碑版本?

里程碑版本让您更容易尝试 jQuery UI 的最新开发代码,而不必从 GitHub 中签出代码。

使用里程碑版本,您可以尝试新的、进展相当快的(虽然还没有最终确定)的小部件,并根据具有特定版本号的已发布代码提供反馈。

注意:由于代码仍在积极开发中,API 可能会有所更改。

Spinner

我们希望您能对我们新的 Spinner 小部件提出反馈,以帮助我们为 1.9 endgültige 版本做好准备。API 已经相当完善,因此,如果您现在开始使用它,迁移到 1.9 endgültige 版本应该非常容易。

Spinner 是一个简单的小部件,允许用户递增或递减当前文本框的值,而无需手动输入。递增不必是整数——它们可以设置为小数(0.1)或每次点击的较大递增量(5)。

该小部件使用jquery-global 插件进行数字的全球化,包括解析和格式化小数和货币值。这使得它从一开始就可以支持数百种文化。

演示:货币

演示

在我们的实时代码查看网站上 menu 分支中尝试一些最新的演示,view.jqueryui.com

下载

您可以将 jQuery UI 1.9 里程碑版本 3 - Spinner 版本下载为 zip 文件或通过 git 下载

文件下载

Git

如何提供反馈

wiki 页面

要帮助设计和开发 Spinner 小部件,请访问我们开发和规划维基 上的Spinner 页面

论坛

如果 wiki 页面上的评论部分没有提供足够的反馈空间,请发布到 开发 jQuery UI 论坛 并为帖子添加标签

如何贡献代码

如果您对 Spinner 有代码更改,请在 GitHub 上分叉 jQuery UI,提交到spinner 分支,并提交拉取请求。

如果您不熟悉 git 或 GitHub,请参阅我们的指南: 如何向 jQuery UI 提交修复程序 - 简单方法

评论

注意:请不要在本博文评论区对 Spinner 小部件提出反馈。此讨论应在维基页面和论坛上进行(请参阅上面的“如何提供反馈”)。

如果您对我们发布第三个里程碑版本有任何反馈,请随时在下方留言。谢谢。

jQuery UI 1.9 里程碑版本 2 - Menu

发布日期: 作者:

jQuery UI 1.9 的第二个里程碑版本已经发布,其中包含正在积极开发的新 Menu 小部件。它还包括自我们第一个里程碑版本 以来对 Tooltip 小部件的更新。

什么是里程碑版本?

里程碑版本让您更容易尝试 jQuery UI 的最新开发代码,而不必从 GitHub 中签出代码。

使用里程碑版本,您可以尝试新的、进展相当快的(虽然还没有最终确定)的小部件,并根据具有特定版本号的已发布代码提供反馈。

注意:由于代码仍在积极开发中,API 可能会有所更改。

菜单

我们希望您能对我们新的 Menu 小部件提出反馈,以帮助我们为 1.9 endgültige 版本做好准备。API 已经相当完善,因此,如果您现在开始使用它,迁移到 1.9 endgültige 版本应该非常容易。

来自Menu 文档

Menu 将一组锚点转换为具有鼠标和键盘支持以选择项目的小部件。它是一个低级小部件,Autocomplete 已经使用它,并设计为其他小部件的基础,例如菜单栏或嵌套菜单。

演示:上下文菜单

演示

在我们的实时代码查看网站上 menu 分支中尝试最新的演示,view.jqueryui.com

下载

您可以将 jQuery UI 1.9 里程碑版本 2 - Menu 版本下载为 zip 文件或通过 git 下载

文件下载

Git

如何提供反馈

wiki 页面

要帮助设计和开发 Menu 小部件,请访问我们开发和规划维基 上的Menu 页面

论坛

如果 wiki 页面上的评论部分没有提供足够的反馈空间,请发布到 开发 jQuery UI 论坛 并为帖子添加标签

如何贡献代码

如果您对 Menu 有代码更改,请在 GitHub 上分叉 jQuery UI,提交到menu 分支,并提交拉取请求。

如果您不熟悉 git 或 GitHub,请参阅我们的指南: 如何向 jQuery UI 提交修复程序 - 简单方法

评论

注意:请不要在本博文评论区对 Menu 小部件提出反馈。此讨论应在维基页面和论坛上进行(请参阅上面的“如何提供反馈”)。

如果您对我们发布第二个里程碑版本有任何反馈,请随时在下方留言。谢谢。

jQuery UI 1.9 里程碑版本 1 - Tooltip

发布日期 作者

jQuery UI 1.9 的第一个里程碑版本发布了,其中包含正在积极开发中的新 Tooltip 小部件。

什么是里程碑版本?

里程碑版本让您更容易尝试 jQuery UI 的最新开发代码,而不必从 GitHub 中签出代码。

使用里程碑版本,您可以尝试新的、进展相当快的(虽然还没有最终确定)的小部件,并根据具有特定版本号的已发布代码提供反馈。

注意:由于代码仍在积极开发中,API 可能会有所更改。

Tooltip

我们非常希望收到您对我们的新 Tooltip 小部件的反馈,以便帮助其为 1.9 正式版做好准备。API 已经很完善了,所以如果您现在开始使用它,迁移到 1.9 正式版应该非常容易。

来自 Tooltip 文档

Tooltip 替换了原生工具提示,使其具有可主题性,并允许各种自定义选项

  • 显示除标题以外的其他内容,例如内联脚注或通过 Ajax 获取的额外内容
  • 自定义定位,例如将工具提示居中在元素上方
  • 添加额外的类来自定义外观,例如用于警告或错误字段

淡入淡出动画用于显示和隐藏工具提示,与仅切换可见性相比,外观更自然。

您只需要一个具有 title 属性的元素。获取该元素并在其上调用 .tooltip()

<a title="Details for this link" href="#">Link</a>
<script>
  $("a").tooltip();
</script>

当鼠标悬停在元素上时,工具提示将出现,如下所示

演示:带有工具提示的表单

演示

在我们的实时代码查看站点上的 tooltip 分支中使用最新的演示,view.jqueryui.com

下载

您可以下载 jQuery UI 1.9 里程碑 1 - Tooltip 版本作为 zip 文件或通过 git

文件下载

Git

如何提供反馈

wiki 页面

要帮助设计和开发 Tooltip 小部件,请访问我们 开发和规划 Wiki 上的 Tooltip 页面

论坛

如果 wiki 页面上的评论部分没有提供足够的反馈空间,请发布到 开发 jQuery UI 论坛 并为帖子添加标签

如何贡献代码

如果您对 Tooltip 有代码更改,请在 GitHub 上 fork jQuery UI,提交到 tooltip 分支,并提交拉取请求。

如果您不熟悉 git 或 GitHub,请参阅我们的指南: 如何向 jQuery UI 提交修复程序 - 简单方法

评论

注意:请不要在本博文的评论部分发表关于 Tooltip 小部件的反馈意见。 此讨论应在 Wiki 页面和论坛上进行(参见上面的“如何提供反馈”)。

如果您对我们发布第一个里程碑版本有任何反馈,请随时在下面留言。谢谢。