2015-04-01 53 views
0

我有以下脚本,在点击时切换两个div的类,并切换触发元素上的文本。切换状态保存在Cookie上并保持在页面刷新上。我不知道如何将切换文本状态保存到cookie也。任何帮助,将不胜感激。保存切换文本到cookie

jQuery(document).ready(function ($) { 
    $('#secondaryfilter').toggleClass('no-filters', $.cookie('currentToggle') === 'on'); 
    $('#mymain').toggleClass('wide', $.cookie('currentToggleb') === 'on'); 
}); 
jQuery(document).ready(function ($) { 
    $('.toggle-filters').on('click', function (e) { 
     var txt = $("#secondaryfilter").is(':visible') ? '+ Show Filters' : '- Hide Filters'; 
     $(".toggle-filters").text(txt); 
     $("#secondaryfilter").toggleClass("no-filters"); 
     $('#mymain').toggleClass("wide"); 
     $.cookie('currentToggle', $("#secondaryfilter").hasClass('no-filters') ? 'on' : 'off'); 
     $.cookie('currentToggleb', $("#mymain").hasClass('wide') ? 'on' : 'off'); 
     e.preventDefault(); 
    }); 
}); 

回答

0

jQuery也没有cookie支持内置如果你抓住了那个示例代码的地方,你也将需要包括cookie的插件:

当你将曲奇设置为如下所示的行:

$.cookie('currentToggle', $("#secondaryfilter").hasClass('no-filters')?'on':'off'); 

您只是创建一个会话cookie。这意味着当您关闭它时,浏览器将丢弃Cookie。如果你想要这个被保留的下一次他们回来,那么你需要在到期日像添加:

var currentToggle = $("#secondaryfilter").hasClass('no-filters')?'on':'off'); 
$.cookie('currentToggle', currentToggle, { expires: 7 }); 

其他我看不出你的代码中的任何问题,虽然我,如果你想知道因为这两条线似乎彼此矛盾:

  1. 切换状态保存在Cookie上并在页面刷新时保持不变。
  2. 我不知道如何将切换文本状态保存到cookie也。
+0

感谢您的反馈,我已经安装了jquery-cookie,并且我的div状态在页面刷新时保存并正确显示。你是对的,但是这个问题没有正确的措辞,因为当页面刷新时我无法正确地存储和显示文本状态。基本上我需要弄清楚如何创建一个cookie来捕获当前文本并在刷新时回调它 – tkhan 2015-04-01 10:33:32

0

我设法让它与下面的代码一起工作,如果任何人有反正下面可以改进我很想看到它。我会给一个解释,但我只是在学习,我觉得我的术语可能会混淆别人。

感谢@rtpHarry的回应,我现在知道了会话cookie和如何在给定的时间长度内存储cookie的区别,即使浏览器已关闭,我相信这会在未来。

jQuery(document).ready(function ($) {  
$('#secondaryfilter').toggleClass('no-filters', $.cookie('currentToggle') === 'on'); 
$('#mymain').toggleClass('wide', $.cookie('currentToggleb') === 'on'); 
var mytxt = $.cookie('txt'); 

if (mytxt === '- Hide Filters') { 
$(".toggle-filters").text('+ Show Filters'); 
    } else { 
$(".toggle-filters").text('- hide Filters'); 
    } 
}); 

jQuery(document).ready(function ($) { 
$('.toggle-filters').on('click', function(e) { 

var txt = $("#secondaryfilter").is(':visible') ? '+ Show Filters' : '- Hide Filters'; 
$(".toggle-filters").text(txt); 

$("#secondaryfilter").toggleClass("no-filters"); 
    $('#mymain').toggleClass("wide"); 
    $.cookie('currentToggle', $("#secondaryfilter").hasClass('no-filters')?'on':'off'); 
    $.cookie('currentToggleb', $("#mymain").hasClass('wide')?'on':'off'); 
    $.cookie('txt', $("#secondaryfilter").is(':visible') ? '+ Show Filters' : '- Hide Filters'); 

e.preventDefault(); 
}); 
});