【问题标题】:Assigning a variable to a cookie.. no wait! The other way around将变量分配给 cookie.. 等一下!另一种方式
【发布时间】:2010-07-19 22:09:28
【问题描述】:

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

例如 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

【问题讨论】:

  • 你正在将一个对象的函数 insted 传递给css()

标签: jquery html css cookies


【解决方案1】:

您的语法在这里是错误的:

$(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 引用的是该函数,而不是元素。您必须将 $(this) 更改为 $('selector') 才能使其正常工作。

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

【讨论】:

  • 好的,这样就消除了那个错误。我遇到的问题是我之前尝试过 animate() 函数并且我得到了这个错误(即使使用你的代码):a.ownerDocument is undefined
【解决方案2】:

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()

【讨论】:

    【解决方案3】:

    你可能是说。

     $(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
    }
    

    它创建了一个对象,其 top 和 left 属性的值分别为 yPosxPos

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多