【发布时间】:2009-08-25 13:23:11
【问题描述】:
我有一个工具面板,当管理员用户登录网站时会显示该面板。调色板是可拖动的(通过 jQueryUI.draggable),我希望它记住页面/刷新之间的位置......是否有这样做的标准方法,或者我应该使用的插件,或者我需要自己滚动(通过 cookie 或其他方式)?
【问题讨论】:
标签: jquery jquery-ui state draggable
我有一个工具面板,当管理员用户登录网站时会显示该面板。调色板是可拖动的(通过 jQueryUI.draggable),我希望它记住页面/刷新之间的位置......是否有这样做的标准方法,或者我应该使用的插件,或者我需要自己滚动(通过 cookie 或其他方式)?
【问题讨论】:
标签: jquery jquery-ui state draggable
Cookie 是一个不错的选择 - 您可以像这样使用 functions by PPK:
$('#palette')
.css({ top: readCookie("palletteY")*1, left: readCookie("palletteX")*1 })
.draggable({ stop: function (event, ui) {
createCookie("palletteX", ui.position.left, 100);
createCookie("palletteY", ui.position.top, 100);
} });
【讨论】:
我不知道这样做的插件或标准(尽管它们很可能存在),但无论如何它并不是一个非常复杂的操作。 Cookies 是实现它的一种方式。
我存储这种类型的客户端状态的首选方法是设置一个回调函数,该函数通过 Ajax 将新状态传递给服务器。然后,我可以为所欲为。通常,我会将其存储在会话中,但有时我会决定某些内容应该永久保留并将其从会话中移至数据库。拥有这个存储的服务器端可以让您轻松地进行更改。我建议首先通过 Ajax 回调将其存储在会话中,然后在页面加载时检索它。
【讨论】:
我认为 cookie 是一个很好的解决方案。甚至还有一个 jquery cookie 插件here。您可以将坐标保存在stop event 上的cookie 中。当页面更改时,您可以检查 cookie 是否存在,如果存在则更改可拖动的 css。
您可以将它保存在数据库中的服务器上,但这对我来说似乎有点矫枉过正。因为你必须改变你的架构。
Kevin 建议使用unload event 来保存坐标。这样您就不必在每次拖动停止时都写入 cookie。
【讨论】: