0 votes

JQuery gardant la classe addClass après le rechargement de la page

Je suis assez nouveau en JQuery et je travaille sur un menu basé sur le script Superfish. J'ai du mal à garder la classe addClass sur l'élément actuellement cliqué lorsque je navigue à travers les liens.

Mon code:

JS

jQuery.noConflict();
jQuery(document).ready(function(){

jQuery("ul.sf-menu").superfish({pathClass:  'corrente'});            

jQuery('#sf-menu li a').click(function() {
      jQuery("#sf-menu li").removeClass('corrente');
      jQuery(this).parents().filter("li").addClass('corrente');
      jQuery("ul.sf-menu").superfish({pathClass:  'corrente'    });
});
});

HTML

  Accueil
  Groupe
  Projets Solo

      Tim
      Tom
      John

  Apparitions Médiatiques
  Tournée

     La Tournée Reunion

        Étape en Amérique du Nord

  Galerie

Le html ci-dessus fonctionne bien, la classe "corrente" est correctement définie, mais lorsque je change le html en insérant des liens réels, la classe est définie correctement mais se perd lorsque la page de destination est chargée.

Pouvez-vous me donner un conseil sur la façon de stocker la classe ajoutée et de la transmettre à la page de destination?

Merci d'avance

1voto

Jacob Mattison Points 32137

L'environnement Javascript entier se réinitialise lorsque vous allez sur une nouvelle page, donc vous ne pouvez pas conserver les modifications apportées en Javascript entre les pages.

Voici quelques façons de gérer cela :

  1. ouvrir la nouvelle page dans un iframe ou dans une fenêtre séparée. La page externe (pour un iframe) ou la page originale (pour une fenêtre séparée) ne se recharge pas, donc les modifications Javascript effectuées dessus ne seront pas perdues.
  2. Ajouter une sorte de chaîne de requête à l'URL lorsque vous passez à la nouvelle page, puis interpréter cette chaîne de requête dans la nouvelle page (avec du javascript) pour refaire tout changement effectué.
  3. Placer des données dans un cookie qui vous permettra d'appliquer le changement sur la nouvelle page.

0voto

Russ Cam Points 58168

Vous pourriez

  • stocker la classe ajoutée dans un cookie
  • faire une requête AJAX au serveur pour persister l'état sur le serveur (peut-être dans une source de données, comme une base de données)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X