2011-04-19 125 views
1

我有以下JQuery切换页面上的标题。我如何使用JQuery Cookie来记住切换状态?JQuery - 使用Cookie记住切换状态

$(document).ready(function() { 
    $('#btnToggleHeader').click(function() { 
    $('#Header').slideToggle('slow'); 
    }); 
}); 

非常感谢!

回答

5

关于javascript和cookies的一个很好的资源是http://www.w3schools.com/JS/js_cookies.asp

根据这个网站,我们给出3种功能于:(。这给了我们如何使用其他两个演示)setCookie方法,getCookie方法和checkCookie

要设置切换的初始状态,这样的事情作品:

$(document).ready(function(){ 
// The initial load event will try and pull the cookie to see if the toggle is "open" 
var openToggle = getCookie("open") || false; 
if (openToggle) 
    $("#Header").show(); 
else 
    $("#Header").hide(); 

// The click handler will decide whether the toggle should "show"/"hide" and set the cookie. 
$('#btnToggleHeader').click(function() { 
    var closed = $("#Header").is(":hidden"); 
    if (closed) 
     $("#Header").show(); 
    else 
     $("#Header").hide(); 
    setCookie("open", !closed, 365); 
}); 

}); 

注:这只是一个参考,我没有时间去测试。希望它有帮助。

+0

它不工作,但我想我可以计算出来了。谢谢! – usnidorg 2011-04-19 19:01:02

+0

Awww,嘘!逻辑在那里,请张贴您的最终代码 - 保持清洁,这有助于很多! – arkinEx 2011-04-19 19:04:01

0

下面是最终的工作版本:

$(document).ready(function() { 
    $("#btnSearchToggle").click(function() { 
     var closed = $("#Header").is(":hidden"); 
     if (closed) 
      $("#Header").show(); 
     else 
      $("#Header").hide(); 

     setCookie("open", closed, 365); 
    }); 

    var openToggle = getCookie("open");  
    if (openToggle=="true") {   
     $("#Header").show(); 
    } 
    else {   
     $("#Header").hide(); 
    } 

}); 

function setCookie(c_name, value, exdays) { 
    var exdate = new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()); 
    document.cookie = c_name + "=" + c_value; 
} 

function getCookie(c_name) { 
    var i, x, y, ARRcookies = document.cookie.split(";"); 
    for (i = 0; i < ARRcookies.length; i++) { 
     x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); 
     y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); 
     x = x.replace(/^\s+|\s+$/g, ""); 
     if (x == c_name) { 
      return unescape(y); 
     } 
    } 
}