Я думаю, что описание немного вводит в заблуждение, однако в него были внесены дополнительные изменения, чтобы привести его в соответствие с описанием ошибки.Хорошо, чтобы достичь желаемого эффекта, используйте следующий код:
<ul>
<li class="property-list">
<input type="checkbox" class="category1" id="elem1"/>
<div>content</div>
</li>
<li class="property-list">
<input type="checkbox" class="category1" id="elem2" />
<div>content</div>
</li>
<li class="property-list">
<input type="checkbox" class="category1" id="elem3"/>
<div>content</div>
</li>
<li class="property-list">
<input type="checkbox" class="category1" id="elem4"/>
<div>content</div>
</li>
</ul>
<button>View Chosen Selection</button>
И сторона JS (для сохранения истории выбранных элементов используется HTML5 Api sessionStorage):
$(function(){
var sStorage = window.sessionStorage || {},
getVal = sStorage.getItem('elemId') || null,
$button = $('button');
// bind 'click' event with input DOM node
$(document).on('click', 'input[type=checkbox]', function(e) {
var $idAttr = $(e.target).attr('id');
// eval if elem is checked
var isElementChecked =
$('#' +$idAttr ).is(':checked') ?
sStorage.setItem('elemId', $idAttr) :
sStorage.removeItem('elemId');
});
if (typeof getVal === "undefined" || getVal === '') {
$('#'+ sStorage.getItem('elemId'))
}
else {
$('#'+ sStorage.getItem('elemId')).
attr('checked', true);
}
// bind 'click' evt with button
$(document).on('click', $button, function(){
return location.reload();
});
});