我有一个工具调色板,当管理员用户登录到某个站点时会显示该工具调色板。可以拖动调色板(通过jQueryUI.draggable),我希望它能记住页面/刷新之间的位置......是否有标准的方法来执行此操作,或者我应该使用的插件,或者我是否需要滚动我自己(通过饼干或其他东西)?
答案 0 :(得分:5)
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);
} });
答案 1 :(得分:1)
我不知道这样做的插件或标准(虽然它可能存在),但它无论如何都不是一个非常复杂的操作。 Cookie是实现它的一种方式。
我存储此类客户端状态的首选方法是设置一个回调函数,该函数通过Ajax将新状态传递给服务器。然后,我可以随心所欲地做。通常,我会将它存储在会话中,但有时我会确定某些事情应该永久保留并将其从会话移动到数据库。拥有此存储的服务器端可让您轻松进行更改。我建议首先通过Ajax回调将其存储在会话中,然后在pageload上检索它。
答案 2 :(得分:1)
我认为Cookie是一个很好的解决方案。甚至还有一个jquery cookie插件here。您可以将坐标保存在stop event的Cookie中。当页面发生变化时,您可以检查cookie是否存在,如果是,则更改可拖动的css。
您可以将其保存在数据库中的服务器上,但这对我来说似乎有点矫枉过正。因为您必须更改架构。
凯文建议使用unload event来保存坐标。这样,每次拖动停止时都不必写入cookie。