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