从cookie中读回可排序的顺序

时间:2013-01-14 22:13:07

标签: jquery jquery-ui jquery-ui-sortable

我有一个“portlet”式仪表板,它使用jQuery UI“可排序”交互,我想在页面加载时读回本地存储的状态。因此,当我在页面上移动portlet时,当我离开并返回页面时,我希望它们位于相同的位置。我需要做这个客户端(“本地首选项”),而不是将状态更改推送到服务器。

在此处看到此问题:jQuery UI Sortable and Cookie

虽然它有一些很好的指示,但我不禁想知道我是否遗漏了一些更基本的东西......已经有几年了,也许还有更好的工具。

我已经掌握了这个更新功能:

update : function(e,ui) {
  // where "shortname" is a unique string identified elsewhere on the page
  localConfig.layout[shortname] = [];
  var containers = $('.widgetContainer');
  containers.each(function(){
    localConfig.layout[shortname].push($(this).sortable("toArray"));
  });
}

这导致了一个数组数组:

[["someWidget", "anotherWidget"],["widgetInOtherColumn", "anotherWidgetInOtherColumn"]]

我不会厌倦你的代码,但我知道我可以在localStorage(或cookie,如果不可用)中设置它。因此存储它将被添加到上面的代码中。

真正的问题只是这个:

是否有使用jQuery UI API读取我的数组数组的简单或内置机制?或者我必须“手动”进入,抓住数组并迭代它们以移动DOM节点?我的意思是上面的代码甚至不需要留下来。 jQuery UI“Tabs”小部件只有一个你可以传递的参数(cookie: {args} ...不确定为什么它不在API中,但它有效!);可以排序有类似的东西,包括在jQUI或插件?

如果只能通过编写新方法来实现,那么最有效的方法是什么?留给我自己的设备,我会抓住所有节点,将它们移动到一个存储容器中,然后通过迭代器将它们移回到需要它们的位置。在我看来,必须采用一种较少涉及的方式来切换元素的顺序。

谢谢!

0 个答案:

没有答案