2017-10-12 8 views
0

J'utilise actuellement un script, qui ajoute une classe active aux liens dans la navigation. Cela fonctionne très bien pour la plupart des pages et compare le href avec l'URL.Ajouter la classe .active à la navigation lorsque vous êtes sur la page correspondante

Le seul problème que je rencontre est lorsque l'utilisateur atterrit sur le domaine et lorsque l'utilisateur clique sur le lien vers la page d'accueil. Le lien vers la page d'accueil va à: ../ donc il n'y a rien à comparer pour le script lorsque vous êtes sur la page d'accueil.

Le script fonctionne pour tous les autres liens, c'est-à-dire ../contact et ../blog/, car le script peut comparer le href à l'URL.

Je pensais à comparer un identifiant du lien, mais je n'ai pas pu le faire fonctionner malheureusement. Voici le script que j'utilise actuellement, qui doit probablement être modifié.

$(function(){ 

var url = window.location.pathname, 
    urlRegExp = new RegExp(url.replace(/\/$/,'') + "$"); 

    $('.nav-order a').each(function(){ 

     if(urlRegExp.test(this.href.replace(/\/$/,''))){ 
      $(this).addClass('current'); 
     } 
    }); 
}); 

Merci pour l'aide!

+1

Toute raison pour laquelle vous utilisez une expression régulière? (il me semble que si vous utilisiez l'opérateur égal, il correspondrait comme prévu) –

+0

lorsque vous savez que c'est la page d'accueil, vous n'avez probablement pas besoin d'une regex. vous pouvez simplement coder cette partie. – joym8

+0

Je dois admettre que je n'ai jamais fait ça auparavant. Pour être honnête, j'ai trouvé ce script en ligne et j'ai pensé que cela correspondrait à mes besoins. Malheureusement, je ne sais pas grand chose sur jquery. –

Répondre

1

Essayez cette

if (window.location.pathname == '/'){ 
    /*you are on homepage*/ 
    $('.nav-order a:first-child').addClass('current'); 
} 
+0

Est-ce que j'utilise ce script à la place du mien ou est-ce que je l'ajoute à mon script actuel? –

+0

Essayez d'ajouter avant votre déclaration 'each' – joym8

+0

Salut, désolé pour la réponse tardive, j'ai essayé d'ajouter, mais malheureusement, cela ne fonctionne pas. Lorsque l'utilisateur atterrit sur la page d'accueil ou tout simplement lors de l'atterrissage sur www.example.com, chaque élément de la navigation est ajouté à la classe active. –