解决sitemesh点击后菜单样式显示问题

上次说到当你点击一个菜单,原本是要他背景颜色改变的,但由于每次请求后台,通过转发后

sitemesh的装饰器页面重新加载了,所有的样式又全部回到最初状态 了,所以一直没有效果,

如果想要菜单回显的话我这里有两种解决思路,

1、第一种方法是、当你点击菜单的时候,把你点击菜单的维一标识发送到后台,后台在一个统一的过滤器里面把这个标识得新放入request区域,这样在你转发到的那个页面再去获取这个标识,然后在js里面定义一个处理全局菜单样式的方法,在$(function(){ //... 在这里执行处理全局菜单样式的方法 }),这个维一标识可以是 id 、name、之类的,但我个人用的是当前菜单在他父元素下的坐标,用过jquery的都知道,jquery有一个index()方法,是获取当前元素下标的


2、第二种方法是使用h5的 localStorage来完成,因为现在大部分浏览器都兼容 localStorage所以用它也是一种好的选择

原因跟第一种方法差不多,只是不需要将维一标识发送给后台,而是存放在localStorage当中

说详细点就是当你当点击某一个菜单时,将菜单的维一标识【我用的是index下标】先存放到localStorage当中,然后在页面显示的时候去localStorage当中获取你存入进去的标识,通过该标识用js找到对应的菜单给他加上样式或class,

发一份我的代码吧

$(function () {
    //菜单点击后背景变色
    var local = window.localStorage;
    if(!local){ return layer.alert('当前浏览器版内核太低、建议更换、否则将会影响页面样式。')}
    var clickMenu = local.getItem('clickMenu') || 1;
    $('.menu li').click(function () {
        local.setItem('clickMenu',$(this).index());
    }).eq(clickMenu).children().addClass('current').parent().siblings().removeClass('clickMenu');
});
这样就解决了菜单显示问题了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值