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

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

菜单的HTML结构:

  • 读取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 u
    nescape(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或者服务器环境下测试

    cookiecookie刷新刷新树形菜单

    相关文章

    前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
    前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
    前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
    前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
    前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
    前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...