2010-09-09 5 views
0

Hey les gens. J'essaie de mettre en place une page où si vous cliquez sur un lien, la classe va changer. Un pas de plus, cela devrait être stocké dans un cookie. Chaque tag A a un identifiant unique.jQuery - Changer de classe sur clic et se souvenir par cookie

Par exemple, voici mon lien exemple:

<a href="#" id="unique1" class="up">Link text</a> 

Lorsqu'un utilisateur clique sur le lien, puis la classe devrait être changé pour « bas » et un cookie devrait être stocké pendant une remémoration de la semaine ce clic. Toute visite ultérieure à cette page devra alors se référer au cookie et définir la classe en conséquence si le lien a déjà été cliqué.

Mes connaissances sur javascript et jQuery sont minimes .. c'est juste au dessus de ma tête. Toute suggestion sur la façon de faire ce travail?

Répondre

0

Bien sûr, vous pouvez changer la classe en un clic.

$(".up").click(function(evt){ $(event.target).removeClass("up").addClass("down"); }); 

Gestion des cookies dans JS? Read up a bit sur ce point. Vous voudrez essentiellement définir l'ID unique comme un tableau/une liste d'entre eux à l'intérieur du cookie. Ensuite, au chargement de la page, faites ceci.

// list = ['#unique1', '#unique2' ... '#unique-n']; 
for(var id in list) 
{ 
    $(id).removeClass("up").addClass("down"); 
} 
+0

Obtenir la classe de changer sur le clic était la seule partie faisable de ma part. Je ne sais pas vraiment comment définir un tableau dans le cookie et le comparer à la question ci-dessus. –

+0

@Robert: Le lien que je vous ai indiqué est très bon. Vous pourriez presque utiliser ce script verbatim pour le faire. –

1

J'utiliser ce plugin pour effet ceci:

http://code.google.com/p/cookies/

Le code pourrait être quelque chose comme:

// set default options 
    // expires date 
    var $todayDate = new Date(); 
    var $expireDate = ($todayDate.getDate() + 7) + '/' + $todayDate.getMonth() + '/' + $todayDate.getFullYear(); 

     $.cookies.setOptions({ 
      expiresAt: $expireDate; 
      }); 


    // click functionality 
     $('#unique1').click(function(){ 

      var $this = $(this); 

      $this.removeClass('up').addClass('down'); 

      var $thisClass = $this.attr("class"); 

      $.cookies.set('ckClass', $thisClass); 

      return false; 

     }); 

Pour vérifier la valeur du cookie et assurez-vous que la classe est utiliser quelque chose comme:

var $ckVal = $.cookies.get('ckClass'); 
    if ($ckVal) { 
     if ($ckVal == 'up') { 
      $('#unique1').attr('class', '').addClass('up'); 
     } else { 
      $('#unique1').attr('class', '').addClass('down');} 
    } 
+0

Si vous souhaitez que la date d'expiration soit mise à jour à chaque clic, le code de la date doit être déplacé dans la méthode de clic et la date d'expiration doit être ajoutée à l'une des options. – RyanP13

+0

Il semble y avoir une erreur de syntaxe sur la ligne: expiresAt: $ expireDate; Je ne peux pas vraiment voir ce qui causerait cette erreur si ... Firebug continue de me crier des avertissements. –

+0

Avez-vous téléchargé et lié au plugin cookie avant ce code? – RyanP13

Questions connexes