可能重复: jQuery Toggle和Cookie
我有一个简单的切换,但是当页面刷新时,切换总是重置,所以我想通过设置cookie来保持它的状态,但是我不知道该如何做。
知道我该怎么保持切换的状态吗?
<div class="question_trigger">
<p>Hi</p>
</div>
<div class="toggle_container">
<div class="block">Hello</div>
</div>
jQuery(document).ready(function(){
jQuery(".toggle_container").hide();
jQuery("div.question_trigger").click(function(){
jQuery(this).toggleClass("active").next().toggle("slow");
});
});
发布于 2013-01-01 12:43:06
使用cookie的解决方案:
jQuery(document).ready(function() {
jQuery(".toggle_container").toggle($.cookie('showTop') != 'collapsed');
jQuery("div.question_trigger").click(function() {
jQuery(this).toggleClass("active").next().toggle();
var new_value = $(".toggle_container").is(":visible") ? 'expanded' : 'collapsed';
$.cookie('showTop', new_value);
});
});发布于 2013-01-01 11:53:25
使用PHP会话变量存储切换状态的基本解决方案
步骤1:通过检查PHP会话变量值,将容器在页面加载期间设置为可见或不可见:
jQuery(document).ready(function(){
if(<?php echo (isset($_SESSION['userId']['toggleState'] && $_SESSION['userId']['toggleState'] === FALSE) ? 'true' : 'false'; ?>)
$('.toggle_container').hide();
});步骤2:添加脚本以更新PHP会话变量
jQuery(document).ready(function(){
jQuery(".toggle_container").hide();
jQuery("div.question_trigger").click(function(){
jQuery(this).toggleClass("active").next().toggle("slow");
var data = ($(this).is(":visible")) ? 'true' : 'false';
$.ajax({
url: 'ajax/update.php',
method : 'post',
data : {data : data},
success: function(data) {
console.log('data updated');
},
error: function (request, status, error) {
alert(request.responseText);
}
});
});
});步骤3:实现ajax/update.php代码(使用实际的userId数据库值)
<?php
$_SESSION['userId']['toggleState'] = (isset($_POST['data']) && $_POST['data'] === 'true') ? true : false;
?>https://stackoverflow.com/questions/14109903
复制相似问题