クリック時に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 プラグインなしで動作します。