选项卡 API 重构

发布于 作者

继续进行API 重构,我们计划对 Tabs 组件进行一些更改。我们知道,像这样的 API 更改对我们的用户来说并非没有成本,因此我们想明确说明,除了专门指出的情况外,**jQuery UI Tabs 在 1.9 中将继续支持 1.8 API**,并且过时的 API 将不会在 jQuery UI 2.0 之前移除。

API 重构

移除旋转。
rotate 方法将被移除,因为它并不常见,并且一直作为内置扩展来实现。这实际上将被移除,而不仅仅是在 1.9 中被弃用,因为它一直作为扩展存在。Christopher McCulloh 基于原始代码开发了一个增强的旋转扩展

彻底改造 AJAX 选项卡
ajaxOptionscache 选项将被移除,取而代之的是一个新的事件:beforeloadbeforeload 事件将接收一个 jqXHR 对象和将传递给 jQuery.ajax() 的设置对象。ajaxOptions 被替换为修改传递给 beforeload 的设置,缓存可以通过调用 event.preventDefault() 来实现,以阻止 AJAX 调用并直接跳转到显示选项卡。我们还将保持 href 属性不变,并将面板 ID 存储在 aria-controls 属性中。aria-controls 属性将为所有选项卡设置,无论它们是本地还是远程。这将消除对 url 方法的需求,该方法也将被移除。可以为远程选项卡在 aria-controls 值中预定义一个值,从而无需在 title 属性中指定位置(该属性也将被移除)。abort 方法将被移除,因为 jqXHR 对象将可以直接访问,因此您可以直接中止 AJAX 调用。beforeload 事件的另一个好处是,当与现有的 load 事件配对时,您可以创建自定义加载功能;因此,我们将移除 spinner 选项。

选中 vs. 活动
为了提高 jQuery UI 套件内部的一致性,select/selected 将在整个套件中统一重命名为 activate/active。这对选项卡来说意味着,selected 选项将被重命名为 activeselect 事件将被重命名为 beforeactivateshow 事件将被重命名为 activatebeforeactivateactivate 选项将包括对旧选项卡和新选项卡的选项卡和内容面板的引用,类似于手风琴。此外,select 方法将被移除,取而代之的是设置 active 选项。最后,deselectable 选项将在 1.9 中被移除,因为它在 1.8 中已被弃用。

移除模板
所有与模板相关的选项将被移除。选项卡中的模板是一个一次性实现,并且与其他 jQuery UI 组件不一致。此更改包括移除 idPrefixtabTemplatepanelTemplate 选项。

添加和移除选项卡
addremove 方法将被移除,取而代之的是一个新的 refresh 方法。这与在初始化后更新新插件的方式一致。移除这些方法还意味着 addremove 事件将被移除。

启用和禁用选项卡
选项卡将正确支持禁用单个选项卡或整个选项卡集。可以使用布尔值禁用整个选项卡集,或者提供一个索引数组来禁用单个选项卡。此外,enabledisable 事件将被移除,以保持与其他组件的一致性。

移除 length 方法
length 方法将被移除,因为它没有太大作用,并且可以通过计算列表项数量轻松计算得出。

移除 cookie 选项
cookie 选项将被移除,因为 cookie 支持不是插件的核心功能。跨页面状态管理应该很容易,但不要内置。

设计变更仍在变化中
有一些事情我们还没有完全确定。我们计划用 showhide 选项替换 fx 选项,以保持与其他组件的一致性,但我们仍在解决一个关于如何在插件之间支持效果的未解决问题。我们还想移除 load 方法,但我们需要验证它是否可以作为扩展构建。在我们进入新的实现之前,我们不知道这是否可行;如果不可行,load 方法将保留在插件中。

反馈

我们很乐意听到您对这些更改的反馈。我们希望确保在最终确定并实施这些更改之前解决社区可能遇到的任何问题。如果您有任何反馈,请在相关论坛帖子上发布。谢谢。

评论已关闭。