Set the cookie to save the status of the tree menu, and reread the cookie when the page loads.
The HTML structure of the menu:
<div><ul><li><a href="#" id="treemenu_a_1">First-level menu 1</a><div id="submenu_1"><ul><li><a href="subpage/a.html" id="submenu_a_1_1">Second-level menu 1</a></li><li><a href="subpage/b.html" id="submenu_a_1_2">Second-level menu 2</a></li><li><a href="#" id="submenu_a_1_3">Second-level menu 3</a></li><li><a href="#" id="submenu_a_1_4">Second-level menu 4</a></li><li><a href="#" id="submenu_a_1_5">Second-level menu 5</a></li></ul></div><li><a href="#" id="treemenu_a_2">First-level menu 2</a><div id="submenu_2"><ul><li><a href="#" id="submenu_a_2_1">Second-level menu 1</a></li><li><a href="#" id="submenu_a_2_1_1">Second-level menu 1</a></li><li><a href="#" id="submenu_a_2_1_1">Second-level menu 1</a></li><li><a href="#" id="submenu_a_2_1_2">Second-level menu 2</a></li><li><a href="#" id="submenu_a_2_1_3">Level 3 Menu 3</a><div id="submenu_2_1_3"><ul><li><a href="#" id="submenu_a_2_1_3_1">Level 4 Menu 1</a></li><li><a href="#" id="submenu_a_2_1_3_2">Level 4 Menu 2</a></li><li><a href="#" id="submenu_a_2_1_3_3">Level 4 Menu 3</a></li></ul></div></li><li><a href="#" id="submenu_a_2_2">Second-level menu 2</a></li><li><a href="#" id="submenu_a_2_3">Second-level menu 3</a></li><li><a href="#" id="submenu_a_2_4">Second-level menu 4</a></li><li><a href="#" id="submenu_a_2_5">Second-level menu 5</a></li></ul></li><li><a href="#" id="treemenu_a_3">Second-level menu 3</a><div id="submenu_3"><ul><li><a href="#" id="submenu_a_3_1">Second-level menu 1</a></li><li><a href="#" id="submenu_a_3_2">Second-level menu 2</a></li><li><a href="#" id="submenu_a_3_3">Second-level menu 3</a></li><li><a href="#" id="submenu_a_3_4">Second-level menu 4</a></li><li><a href="#" id="submenu_a_3_5">Second-level menu 5</a></li></ul></div></li></ul></div>
Read cookie tool class:
//cookie tool class var cookieTool = {//Read cookiegetCookie: function(c_name) {if (document.cookie.length > 0) {c_start = document.cookie.indexOf(c_name + "=");if (c_start != -1) {c_start = c_start + c_name.length + 1;c_end = document.cookie.indexOf(";", c_start);if (c_end == -1) {c_end = document.cookie.length;}return unescape(document.cookie.substring(c_start, c_end));}}return "";},//Set cookiessetCookie: function(c_name, value, expireds) {var exdate = new Date();exdate.setDate(exdate.getDate() + expireds); //Set date document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());},//Delete cookiedelCookie: function(c_name) {var exdate = new Date();exdate.setDate(exdate.getDate() - 1); //Yesterday's date document.cookie = c_name + "=;expires=" + exdate.toGMTString();}};Menu event binding:
//Menu event binding $('.treemenu a').bind('click', function() {var $this = $(this);var id = $this.attr('id');var $submenu = $this.next('.submenu');if ($submenu.length > 0) { //Is there a submenu var flag = $(this).next('.submenu:hidden').length > 0 ? true : false;if (flag) {$submenu.show();} else {$submenu.hide();}var display = flag ? 'block': 'none';cookieTool.setCookie(id, display, 10);} else {cookieTool.setCookie(id, id, 10);var curId = cookieTool.getCookie(id);$('.treemenu').find('.on').removeClass('on').addClass('off');$('#' + curId).addClass('on');$('.treemenu a[class="off"]').each(function() { cookieTool.delCookie($(this).attr('id')); //Delete other selected options cookies});}});Reset menu when page loads
//The page loads read cookies$('.treemenu a').each(function() {showMenu($(this).attr('id'));});//The read cookie display menu function showMenu(id) {var $this = $('#' + id);var cookie = cookieTool.getCookie(id);if (cookie) {if ($this.next('.submenu').length > 0) {$this.next('.submenu').css('display', cookie);} else {$('#' + cookie).addClass('on');}}}}Complete DEMO:
【JavaScript】Refresh unchanged tree menu (multi-level menu).zip
Note: The local Chrome console cannot read cookies, and it needs to be tested in firefox/IE or server environment