我在不同的页面上有很长的图像列表,用户可以单击图像自己的复选框,将显着创建的图像存储在名为#area
的div容器中,该容器始终位于站点的顶部。
原始示例仅按页面存储图像。当您翻页浏览其他页面时,容器将再次变为空,除非您返回到存储图像位于结果列表中的页面。
我想知道是否可以将#area
容器的整个状态存储在localStorage中,以便它始终记住整个站点中的附加图像。在第二个示例中,我检查了Chrome控制台,发现它只能存储空的<div></div> <div></div> <div></div>
,而不能存储附加的图像。
jQuery的:
var $chks = $('.compare').change(function () {
if ($(this).is(':checked')) {
var img = $('<img>'),
findimg = $(this).closest('.box').find('img'),
data_term = findimg.data('term');
img.attr('src', findimg.attr('src'));
img.attr('data-term', data_term);
var input = '<input type="hidden" name="imagecompare" value="' + data_term + '">';
$('#area').find('div:empty:first').append(img).append(input);
} else {
var term = $(this).data('term'),
findboximage = $('#area > div > img[data-term=' + term + ']')
findboximage.parent('div').empty();
}
});
$(document).on('click', '#area > div', function () {
var term = $(this).find('img').data('term');
$('input[data-term='+term+']').removeAttr('checked');
$(this).empty();
});
if (('localStorage' in window) && window['localStorage'] !== null) {
var divtosave = $("#area").html();
localStorage.setItem('saveddiv', divtosave);
}
if ('saveddiv' in localStorage) {
$(".bigbox").html(localStorage.getItem('saveddiv'));
}
HTML:
<div class="box">
<img data-term="A" src="http://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Crystal_Clear_action_run.png/40px-Crystal_Clear_action_run.png" />
<input data-term="A" class="compare" type="checkbox" />
</div>
<div class="box">
<img data-term="B" src="http://upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" />
<input data-term="B" class="compare" type="checkbox" />
</div>
<div class="box">
<img data-term="C" src="http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png" />
<input data-term="C" class="compare" type="checkbox" />
</div>
<div class="bigbox">
<div id="area">
<div></div>
<div></div>
<div></div>
</div>
</div>
答案 0 :(得分:1)
<强> Updated Demo 强>
将最后一个条件更改为
if ('saveddiv' in localStorage) {
$("#area").html(localStorage.getItem('saveddiv'));
}
此外,
在函数中添加第一个if条件,并在追加后调用此函数。
function store() {
if (('localStorage' in window) && window['localStorage'] !== null) {
var divtosave = $("#area").html();
localStorage.setItem('saveddiv', divtosave);
}
}