保存在Cookie

时间:2016-03-18 06:39:08

标签: jquery cookies

所以我有一个div,cguts,可以使用jquery切换可见性并且可以在屏幕上拖动。我已经设法弄清楚如何使用cookie来提高持续性的可见性,但我似乎无法掌握如何让div的位置在整个站点中保持不变。

除了将div的位置从一个页面保存到下一个页面之外,以下代码适用于所有内容。

$(document).ready(function () {   
        var cookieName = 'cvis';

        function setCookie(key, value) {
            var expires = new Date();
            expires.setTime(expires.getTime() + 31536000000); //1 year 
            document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
        }

        function getCookie(key) {
            var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
            return keyValue ? keyValue[2] : null;
        }
        if (getCookie(cookieName) === '1') {
            $('#cguts').show();
            $('#cguts').draggable(function(event, ui) {
             var currentPos = $(this).position();
             var currentTop = Math.round(currentPos.top);

             // save cookie when stopped dragging
             $.cookie('position' + $(this).index('div').toString(), currentTop.toString());});
        } else if (getCookie(cookieName) === '0') {
            $('#cguts').hide();
        } else {
            setCookie(cookieName, '1');
            $('#cguts').show();
            $('#cguts').draggable(function(event, ui) {
             var currentPos = $(this).position();
             var currentTop = Math.round(currentPos.top);

             // save cookie when stopped dragging
             $.cookie('position' + $(this).index('div').toString(), currentTop.toString());});
        }
        $('.click').on('click', function () {
            if ($('#cguts').is(':visible')) {
                $('#cguts').fadeOut(300);
                setCookie(cookieName, '0');
            } else {
                $('#cguts').fadeIn(300);
                $('#cguts').draggable(function(event, ui) {
             var currentPos = $(this).position();
             var currentTop = Math.round(currentPos.top);

             // save cookie when stopped dragging
             $.cookie('position' + $(this).index('div').toString(), currentTop.toString());});
                setCookie(cookieName, '1');
            }
        });
    });

我现在的问题是我做错了什么?我怀疑这个问题是在可编码的cookie编码中,但我正式丢失了......

2 个答案:

答案 0 :(得分:0)

我认为这就是你需要的

小提琴链接https://jsfiddle.net/k414mtmt/2/

    $('#cguts').draggable({

    drag: function(event, ui) {

    var currentPos = $(this).position();
    var currentTop = Math.round(currentPos.top);

    // save cookie when stopped dragging
    setCookie('position' + $(this).index('div').toString(), currentTop.toString());
  }
});

enter image description here  希望这有帮助.. :)

答案 1 :(得分:0)

我最终从另一个方向接近了这个问题,所以我想我会分享最终成为我的解决方案。

我将以下内容添加到文件的开头:

$(document).ready(function () {
     if ($.cookie("cvispos") != undefined) {
         var unwrapped = window.JSON.parse($.cookie("cvispos"));
         var left = window.JSON.parse($.cookie("cvispos")).left;
         var top = window.JSON.parse($.cookie("cvispos")).top;
         $("#cguts").css("left", left + "px");
         $("#cguts").css("top", top + "px");
     }
 });

然后将我的可拖动值更改为:

$( "#cguts" ).draggable({ stop: function (event, ui) {
         $.cookie("cvispos", window.JSON.stringify(ui.position));
     }
     });

它就像一个魅力。