Here's a toggle menu who works perfectly: If I click on the link (HTML code below), the menu folds. But I want if the users reload the page to keep the state of menu (expand / collapse).
$('#menu_toggle').click(function () { if ($('body').hasClass('nav-md')) { $('body').removeClass('nav-md'); $('body').addClass('nav-sm'); $('.left_col').removeClass('scroll-view'); $('.left_col').removeAttr('style'); $('.sidebar-footer').hide(); if ($('#sidebar-menu li').hasClass('active')) { $('#sidebar-menu li.active').addClass('active-sm'); $('#sidebar-menu li.active').removeClass('active'); } } else { $('body').removeClass('nav-sm'); $('body').addClass('nav-md'); $('.sidebar-footer').show(); if ($('#sidebar-menu li').hasClass('active-sm')) { $('#sidebar-menu li.active-sm').addClass('active'); $('#sidebar-menu li.active-sm').removeClass('active-sm'); } } });
<a id="menu_toggle"><i class="fa fa-bars"></i></a>
How to remember the state? Full project: http://demo.kimlabs.com/gentelella/production/index.html Thanks
You should use cookies to store booleans, of if the menu has been opened or closed. Then when a page is loaded, it checks for any stored cookies, and by default uses those variables.
For example:
on page load:
var menuOutBoolean = Cookies.get("menuOutB") || false;
if (menuOutBoolean == true || menuOutBoolean == "true"){
//put the menu out
}
else {
//put menu in
}
On change:
if (/*out*/){
Cookies.set("menuOutB","true");
}
else{
Cookies.set("menuOutB","false");
}
Note: Here I have used this JavaScript API (Jquery Plugin) .
This is the sort of thing I'd use localStorage for. Just set some kind of flag in localStorage when the state changes and fetch it when your page loads.
I should add that using css classes to represent view state isn't a good idea and will bite you if your UI gets much more complicated.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.