js 通过cookie实现刷新不变化树形菜单

前端之家收集整理的这篇文章主要介绍了js 通过cookie实现刷新不变化树形菜单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

通过设置cookie来保存树形菜单的状态,在页面加载时重新读取cookie来设置菜单

菜单的HTML结构:

@H_403_5@

读取cookie工具类:

<div class="jb51code">
<pre class="brush:js;">
//cookie工具类
var cookieTool = {
//读取cookie
getCookie: 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 "";
},//设置cookie
setCookie: function(c_name,value,expiredays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays); //设置日期
document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
},//
删除cookie
delCookie: function(c_name) {
var exdate = new Date();
exdate.setDate(exdate.getDate() - 1); //昨天日期
document.cookie = c_name + "=;expires=" + exdate.toGMTString();
}
};

菜单事件绑定:

0) { //是否有子菜单 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')); //删除其他已选择选项cookie }); } });

页面加载时重新设置菜单

//读取cookie显示菜单
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');
}
}
}

完整DEMO:

菜单(多级菜单).zip

注意:chrome本地控制台无法读取cookie,需要在firefox/IE或者服务器环境下测试

猜你在找的JavaScript相关文章