【发布时间】:2013-10-02 01:12:50
【问题描述】:
我有在点击时设置和清除 cookie(记住 div 的样式)的工作代码:
var originalAttributes = $('.aaa').attr('style');
$('.aaa').each(function(){
var d = $(this),
id = d.attr('id'),
storedStyle = $.cookie('aaaStyle' + id);
if (storedStyle != undefined){ //style stored
d.attr('style', storedStyle);
}
});
//mouse event functions for class="aaa"
$('#save').click(function () {
$('.aaa').each(function(){
var d = $(this),
id = d.attr('id'),
style = d.attr('style');
if (style != originalAttributes){ //style changed
$.cookie('aaaStyle' + id, style, { expires: 30 });
}
});
});
$('#clear').click(function () {
// unset changes
$('.aaa').attr('style',originalAttributes).each(function(){
var d = $(this),
id = d.attr('id');
$.cookie('aaaStyle' + id, null);
});
});
唯一的问题是当我必须处理大量相同类的 div 时 - cookie 大小可以达到 500kb 或更多。浏览器仅支持每个 cookie 4kb。
所以问题是——如何使用这个函数和 jquery cookie 插件来避免这个问题? - gzip 或 / 并将 cookie 分成足够小的部分?
(无论哪种方式,最好进行某种压缩以加快性能(如果可能 - 但如果没有,没关系))
编辑:如何使用本地存储实现相同的“保存 - 清除”功能?
edit2:由 user2111737 (http://jsfiddle.net/z8KuE/33/) 解决 - 使用本地存储而不是 cookie,并且无需 cookie 插件即可工作。
【问题讨论】:
-
我猜你不需要保存那么多东西 - 保存真实数据,然后通过任何类型的模板语言重建标记。
-
我不知道该怎么做。你能告诉我(更新这个小提琴)吗?
-
如果您的 cookie 变得这么大,您应该考虑其他选项,例如 localStorage。请记住,如果这些 cookie 设置为 *.yourdomain.com,它们会附加到每个请求中,因此会对性能(流量)造成巨大影响。
-
我知道了,所以我更新了这个问题。问题是我不知道如何做到这一点。
标签: function cookies jquery-cookie jquery