【问题标题】:Preserve toggle state using jQuery [duplicate]使用jQuery保留切换状态[重复]
【发布时间】:2013-01-01 20:43:06
【问题描述】:

可能重复:
jQuery Toggle with Cookie

我有一个简单的切换,但切换总是在页面刷新时重置,所以我想通过设置一个 cookie 来保留它的状态,但我不知道该怎么做......

知道如何保持切换状态吗?

http://jsfiddle.net/Qyufx/

<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");
    });
});​

【问题讨论】:

  • 您是否只需要在重新加载时保留状态,或者在其他地方返回时保留状态?
  • 我需要保留状态直到用户登录:)
  • @Joddy 你能给我一个集成那个插件的小提琴吗?
  • @Barmar 你从那个答案中明白了什么,因为我不能

标签: jquery toggle


【解决方案1】:

使用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);
    });
});​

FIDDLE

【讨论】:

  • 你真是太棒了,非常感谢你,我真的很感激..
【解决方案2】:

使用 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);
              }
            });
        });
});​

第三步:实现ajax/update.php代码(使用真实的userId数据库值)

<?php
    $_SESSION['userId']['toggleState'] = (isset($_POST['data']) && $_POST['data'] === 'true') ? true : false;
?>

【讨论】:

  • 谢谢你帮助我:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 2013-08-16
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多