还记得jquery跨站点切换?

时间:2015-12-19 18:43:36

标签: javascript jquery

我希望能够通过点击按钮隐藏和取消隐藏冗长的菜单,而且我能够做到。但我不希望访问者每次访问新页面时都必须隐藏菜单,所以我希望记住他们的最后一次点击。这是我无法做到的。任何帮助表示赞赏。我甚至愿意采取更好的方式来做到这一点。

我认为可行的代码,但不是,

        $(document).ready(function(){
    $("button").click(function(){
        $("div.themenu").toggle(100);
    });
});

$(function(){
       if($.cookie){
           $("#themenu").toggle(!(!!$.cookie("toggle-state")) || $.cookie("toggle-state") === 'true');
    }
    $('#menubutton').on('click', function(){
        $("#themenu").toggle();
        $.cookie("toggle-state", $("#themenu").is(':visible'), {expires: 1, path:'/'}); 
});
});

他们点击按钮的代码是:

<button id="menubutton" class="myButton">Show / Hide Menu</button>

长而长的菜单显示如下:

<div class="themenu">Long Long Menu Code</div>

2 个答案:

答案 0 :(得分:0)

只是为了好玩:这是一个不需要cookie的替代解决方案,但设置了一个URL参数:

//on page load
if (location.href.match('menu=show'))
  $("#themenu").toggle();

//for every link click, block & redirect with menu=show if menu is visible
$(document.body).on('mousedown', 'a', function(e) {
  e.preventDefault();
  var menuParam = (location.href.match('?') ? '&' : '?') + 'menu=show';
  location.href = $("#themenu").is(':visible') ? this.href + menuParam: this.href;
});

答案 1 :(得分:0)

localStorage是存放这种状态的好地方。设置就像localStorage.menu = 'hidden'localStorage.menu = 'visible'一样简单,可以使用(localStorage && localStorage.menu==='hidden')进行检查。拥有真正旧浏览器的用户无法获得该功能,但这只是一小部分用户。此设置将在访问该网站时生效,但仅限于同一浏览器。某些浏览器在“隐私浏览”中存在问题。模式。它们有时会使localStorage在修改时导致错误。