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
You have 2
class
HTMLdivs
try using theID
property instead of usingclass
, however make sure you specify two differentID
s as currently the classes are clashing.As you can see I have assigned the
ID
property to each one, now you'd add a style to that specificID
so that way they don't clash.Based on your reply to a previous answer (ID's are too cumbersome)
Here is another approach. You can use their
index
as thelocalStorage
value. HOWEVER, the number of theitem
elements must not change AND they don't change ordering.Here is a codepen: http://codepen.io/anon/pen/pJYroL
NOTE I really recommend that you apply ID to the elements if you can. That will be more flexible. :)