I am clueless when it comes to localStorage it seems. I want to set up a way favorite any div in a group of div's by toggling a class. I can get the toggleClass to work on the individual div and be saved but localStorage saves all the div's as favorites, not just the one with the toggleClass set. Obviously I am missing something.
localStorage code:
if (typeof (localStorage) == 'undefined') {
document.getElementById("result").innerHTML = 'Your browser does not support HTML5 localStorage. Try upgrading.';
} else {
if (localStorage.getItem("fav") != null) {
getFav = localStorage.fav;
$(".item").addClass('favorites');
}
}
$(document).ready(function () {
$('.btn').on('click', function () {
getFav = localStorage.fav;
//$(".item").removeClass('favorites');
//localStorage.removeItem('background');
$(this).closest(".item").toggleClass('favorites');
if ($(this).closest(".item").hasClass('favorites')) {
localStorage.setItem('fav', 'favorites');
}else{
localStorage.removeItem('fav');
}
});
});
The issue resides in
$(".item").addClass('favorites');
It adds the class to all .items and obviously it should not.
Any help would be appreciated!
In case the other answers questions do not suffice here is a solution that allows you to have multiple divs that will maintain state after reload rather than just one.
http://codepen.io/anon/pen/WvmEbX
if (typeof(localStorage) == 'undefined') {
document.getElementById("result").innerHTML =
'Your browser does not support HTML5 localStorage. Try upgrading.';
} else {
$(".item").each(function(i, el) {
if (localStorage['fav' + i] == 'favorites') {
$(this).addClass('favorites');
}
});
}
$(document).ready(function() {
$('.btn').on('click', function() {
var $item = $(this).closest('.item');
var index = $('.item').index($item);
$item.toggleClass('favorites');
if ($item.hasClass('favorites')) {
localStorage.setItem('fav' + index, 'favorites');
} else {
localStorage.removeItem('fav' + index);
}
});
});