3

重複の可能性:
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");
    });
});​

</p>

4

2 に答える 2

5

クッキーを使用したソリューション:

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-01T12:43:06.520 に答える
1

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;
?>
于 2013-01-01T11:53:25.227 に答える