2011-05-07 4 views
1

Donc, mon problème est que j'ai des "sélecteurs" qui vous indiquent le menu que vous utilisez. J'utilise deux classes, les classes selected et unselected.Ajout/Suppression de CSS lors du chargement de la page

Lorsque la page se charge, je charge basé sur le hachage dans l'URL, et que les charges fines (ce qui implique que ma fonction lorsque la charge de page fonctionne!)

Maintenant, j'ai une méthode distincte, appelée setSelect() qui supprime/ajoute le CSS aux éléments de menu en fonction d'une variable déclarée au début de mon document JS.

est donc ici le code (je coupe beaucoup dehors et ne gardais parties pertinentes)

var jlLocation = 1; 

function setSelect() { 
     if(jlLocation==1) { 
      $('#location1').removeClass('unselected'); 
      $('#location1').addClass('selected'); 
      $('#location2').removeClass('selected');  
      $('#location2').addClass('unselected'); 
     } 
     else if(jlLocation==2) { 
      $('#location1').removeClass('selected');  
      $('#location1').addClass('unselected'); 
      $('#location2').removeClass('unselected'); 
      $('#location2').addClass('selected'); 
     } 
} 

$(function(){ 
       // Bind an event to window.onhashchange that, when the hash changes, gets the 
       // hash and adds the class "selected" to any matching nav link. 
       $(window).hashchange(function(){ 
        hash = location.hash; 
        document.title = 'Joy Luck ' + (hash.replace(/^#/, '- ') || '') + ''; // Set the page title based on the hash. 
        setSelect(); 
        if (hash == "#Home") { 
         showHome(); 
        } 
        else if (hash == "#Accommodations") { 
         showAccommodations(); 
        }  

        $('#menu a').each(function(){ 
         var that = $(this); 
         that[ that.attr('href') == hash ? 'addClass' : 'removeClass' ]('selected'); 
        }); 
        }) 
        $(window).hashchange(); 
       }); 

Encore une fois, si je charge sur le hachage #home ou #accommodations ces méthodes fonctionnent, mais la méthode setSelect(); ne fonctionne pas. Toutes les méthodes sont placées avant la méthode qui charge les hachages, cela ne devrait donc pas poser de problème.

EDIT

Je suis au courant setSelect() n'a pas été appelée. C'est parce que peu importe où je l'appelle dans cette méthode, ça n'a pas marché. Mais, pour l'aider, je le mets dans.

+0

Est-ce une faute de frappe votre code manque a} sur la première fonction pour le fermer? Aussi, vous avez vraiment besoin de réutiliser les sélecteurs. Ne faites pas $ ('# location1') plusieurs fois. Chaîne les! $ ("xxx"). addClass ("x"). removeClass ("y"); – epascarello

+0

Désolé, il n'a pas survécu à mes méthodes visqueuses de copier et coller. Il existe dans mon code d'origine. – Johannes

+0

Que appelle setSelect()? – epascarello

Répondre

0

Le problème est que vous n'êtes jamais appeler la fonction setSelect() (ou au moins votre code montre que)

+0

C'est mon erreur. Je l'avais enlevé après qu'il n'ait effectivement rien fait. – Johannes

Questions connexes