首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jQuery保存跨请求的菜单切换按钮状态?

问如何使用jQuery保存跨请求的菜单切换按钮状态?
EN

Stack Overflow用户
提问于 2014-06-12 12:14:03
回答 5查看 977关注 0票数 2

我正在为移动设备构建一个网站,我有这个jQuery功能,它根据用户选择的内容显示或隐藏主菜单:

代码语言:javascript
复制
$(function() {

    $('#nav_toggle').on('click', function(event) {  
        $('#main_nav').slideToggle();
        $(this).toggleClass("collapsed");
        event.preventDefault();  
    });

});

我的问题是:如何在请求中保留(或不保留)菜单中的collapsed类?

现在,用户必须切换每个页面上的菜单。

在请求之间以某种方式存储它会很好,也许可以设置一个cookie?

这是如何做到的呢?

我对jQuery相当陌生,所以非常希望提供一个代码示例。

谢谢你的帮助。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-06-12 12:39:12

如果您使用的是HTML5,我宁愿选择本地存储:

代码语言:javascript
复制
// Store
localStorage.setItem("lastname", "Smith");
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname"); 
票数 1
EN

Stack Overflow用户

发布于 2014-06-12 12:19:42

您可以尝试将查询字符串或散列附加到您的URL并以这种方式传递菜单状态。或者你可以用曲奇。

下面是在JavaScript中设置/获取cookie的代码。

代码语言:javascript
复制
function setCookie(value) {
    var expires = "; ";
    if (config.cookie_duration) {
        var date = new Date();
        date.setDate(date.getDate() + config.cookie_duration);
        expires = "; expires=" + date.toGMTString() + "; ";
    }   
    document.cookie = "SELECTED_STATE=" + value + expires + "path=/";
}

function getCookie() {
    var name = "SELECTED_STATE=";
    var c_arr = document.cookie.split(';');
    for (var i = 0; i < c_arr.length; i++) {
        var c = c_arr[i];
        while (c.charAt(0) == ' ')
            c = c.substring(1, c.length);

        if (c.indexOf(name) == 0)
            return c.substring(name.length, c.length);
    }
    return null;
}

免责声明:我很久以前就在网上找到了基本的想法,我不记得到底是从哪里来的。它被修改以适应我正在做的一个项目的需要,所以我只是在这里复制它。

票数 1
EN

Stack Overflow用户

发布于 2014-06-12 12:20:32

是的,您可以保存cookie并在所有页面上使用它。

document.cookie="username=John Smith; path=/";

获取cookie代码

代码语言:javascript
复制
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i].trim();
        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
    return "";
}

在页脚上写这样的东西

代码语言:javascript
复制
$(document).ready(function(){

    if(getCookie(cookiename)!=''){

      $('menuIdOrClass').addClass('class Name Which keep menu open')

     }

});

索鲁斯- cookies.asp

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24184128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档