添加cookie以进行拖放

时间:2011-11-26 03:07:38

标签: javascript jquery cookies drag-and-drop position

我正在创建一个拖放插件,我想让它有点独特我会添加一个Cookie功能来保存拖动元素的位置。

我目前正在使用以下代码来获取和设置Cookie:

$.setCookie = function(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
    document.cookie = c_name + "=" + c_value;
}
$.getCookie = function(c_name) {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x == c_name) {
            return unescape(y);
        }
    }
}

这些工作正常。但我无法工作的是:

if (o.cookies === true) {
    $(oj).mouseup(function() {
        var currentPos = $(oj).position();
        $.setCookie('tposition22' + $(oj).index(), currentPos.top, 365);
        $.setCookie('lposition22' + $(oj).index(), currentPos.left, 365);
        alert('Cookies Set!')
    });
    $(function() {
         var savedLeftPosition = $.getCookie('lposition22' + $(oj).index());
         var savedTopPosition = $.getCookie('tposition22' + $(oj).index());
         $(oj).css({
             top: savedTopPosition,
             left: savedLeftPosition
         });
    });
}

代码说明:o.cookies === true用于检查Cookie是否设置为true; setCookie工作(我检查过); oj指的是this,选择器。

问题:我需要能够获得cookie的值。因为,我当前正试图使值成为被拖动元素的位置,然后检索它。

正如您在$.setCookie('tposition22' + $(oj).index(), currentPos.top, 365);中看到的那样,currentPos.top位于价值点。获取被拖动元素的Y位置。

主要问题:有没有办法检索Cookie的value

1 个答案:

答案 0 :(得分:3)

当然,您可以检索cookie的值。我不喜欢重新发明轮子,因为你已经在jQuery-ville,为什么不使用jQuery cookie插件呢?我认为甚至还有一个“正式”的。应该提供对与cookie交互所需的一切的简单访问(实际上,只需获取并设置一个!)。

关于您的特定代码,o(来自o.cookies)来自哪里,为什么它应该是布尔值?

附注:几乎所有代码都可以从正确命名的变量中受益。让你的minifier减少到单个字母将使你的代码更具可读性。