2010-07-19 3 views
1

Je voudrais affecter un cookie à une variable ...Affectation d'une variable à un cookie .. non wait! L'inverse

par exemple. J'utilise le jQuery cookie functions - dois-je définir le cookie ET définir la variable en même temps ou quelque chose?

Aidez-moi s'il vous plaît!

^^

Mon code:.

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); 
    }); 

    } 
} 

Je reçois l'erreur suivante: a.ownerDocument is undefined

+0

vous passez une fonction insted d'un objet à 'css()' –

Répondre

3

Votre syntaxe ne tourne pas rond:

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

Peut-être que vous vouliez dire:

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

Ou:

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

En réponse à votre mise à jour/nouveau numéro:

$(this) ne fonctionnera pas dans la portée de goBackToPosition car cela fait référence à cette fonction plutôt qu'à un élément. Vous devrez changer $(this) en $('selector') pour le faire fonctionner.

Ou utilisez goBackToPosition.call($('selector')) si vous souhaitez continuer à l'utiliser. La fonction d'appel modifie la valeur de ceci lorsque la fonction appelée s'exécute, une fonction similaire est apply.

+0

Ok, de sorte que s'est débarrassé de cette erreur. Le problème que j'ai, c'est que j'ai essayé la fonction animate() avant et j'ai cette erreur (même avec votre code): 'a.ownerDocument is undefined' –

+0

Question mise à jour :) –

+0

Réponse mise à jour :) – balupton

0

Vous pourriez dire.

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

La syntaxe que vous aviez n'a pas de sens. Vous passiez une fonction, mais le corps de la fonction ressemblait à un objet littéral. Comme dit balupton, vous devrez peut-être combiner avec fadeIn.

{ 
    top: yPos, 
    left: xPos 
} 

est le même que:

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

Il crée un objet avec des propriétés haut et à gauche avec les valeurs yPos et xPos, respectivement.

1

this n'a aucun sens dans ce contexte. Soit le remplacer par un sélecteur, ou lui donner un sens:

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); 
     }); 

    } 
} 

Alors:

$(selector).goBackToPosition() 
+0

Parfait, merci Eric! –

Questions connexes