我正在创建一个拖放插件,我想让它有点独特我会添加一个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
?
答案 0 :(得分:3)
当然,您可以检索cookie的值。我不喜欢重新发明轮子,因为你已经在jQuery-ville,为什么不使用jQuery cookie插件呢?我认为甚至还有一个“正式”的。应该提供对与cookie交互所需的一切的简单访问(实际上,只需获取并设置一个!)。
关于您的特定代码,o
(来自o.cookies
)来自哪里,为什么它应该是布尔值?
附注:几乎所有代码都可以从正确命名的变量中受益。让你的minifier减少到单个字母将使你的代码更具可读性。