将变量分配给cookie ..没有等待!另一种方式

时间:2010-07-19 13:31:30

标签: jquery html css cookies

我想将cookie分配给变量......

e.g。    var aVariable = $.cookie("moo");

我正在使用jQuery cookie functions - 我是否需要设置cookie并同时设置变量?

请帮忙!

^。^

我的代码:

function goBackToPosition() {
    var xPos = $.cookie("yourPositionX");
    var yPos = $.cookie("yourPositionY");

        console.log(xPos);
        console.log(yPos);

    if (xPos) {
        alert("xpos!");
        $(this).animate({
            top:    yPos,
            left:   xPos
    }, 400, function(){
            $.cookie("yourPositionX", null);
            $.cookie("yourPositionY", null);
    });

    }
}

我收到以下错误:a.ownerDocument is undefined

3 个答案:

答案 0 :(得分:3)

这里的语法错误:

$(this).css(function() {
    top:    yPos,
    left:   xPos
}, 400, function() {
    $.cookie("yourPositionX", null);
    $.cookie("yourPositionY", null);
});

也许你的意思是:

$(this).css({
    top:    yPos,
    left:   xPos
}).fadeIn(400, function(){
    $.cookie("yourPositionX", null);
    $.cookie("yourPositionY", null);
});

或者:

$(this).animate({
    top:    yPos,
    left:   xPos
}, 400, function(){
    $.cookie("yourPositionX", null);
    $.cookie("yourPositionY", null);
});

回复您的更新/新问题:

$(this)将无法在goBackToPosition的范围内工作,因为它引用了该函数,而不是元素。您必须将$(this)更改为$('selector')才能使其正常运行。

如果您想继续使用此功能,请使用goBackToPosition.call($('selector'))。 当被调用函数执行时,call函数会改变this的值,类似的函数是apply

答案 1 :(得分:1)

在这种情况下,

this毫无意义。要么用选择器替换它,要么赋予它一些含义:

jQuery.fn.goBackToPosition = function() {
    var xPos = $.cookie("yourPositionX");
    var yPos = $.cookie("yourPositionY");

        console.log(xPos);
        console.log(yPos);

    if (xPos) {
        alert("xpos!");
        this.animate({
            top:    yPos,
            left:   xPos
        }, 400, function(){
                $.cookie("yourPositionX", null);
                $.cookie("yourPositionY", null);
        });

    }
}

那么:

$(selector).goBackToPosition()

答案 2 :(得分:0)

你可能意味着。

 $(this).css({
            top:    yPos,
            left:   xPos
        }).fadeIn(400, function() {
            $.cookie("yourPositionX", null);
            $.cookie("yourPositionY", null);
        });

你的语法没有意义。您正在传递一个函数,但该函数的主体看起来像一个对象文字。正如balupton所说,你可能需要与fadeIn结合使用。

{
   top:    yPos,
   left:   xPos
}

与:

相同
{
   "top":    yPos,
   "left":   xPos
}

它创建一个具有顶部和左侧属性的对象,其值分别为yPosxPos