Comment append une classe en fonction de l’URL actuelle

var search_name = location.search; if (search_name.search("cate_no=24") > 0) { $(".cate_new a").addClass("active"); } }); 

Si l’URL du document actuel est http://abc.com/list.html?cate_no=24 , je souhaite append la classe “active” à li a.

J’ai cherché et trouvé ce code js, mais cela ne fonctionne pas. Est-ce faux?

C’est incorrect. search() renvoie la position de décalage d’une correspondance si une correspondance est trouvée et -1 si une correspondance n’est pas trouvée.

Lorsque vous vérifiez si cate_no=24 contient cate_no=24 , il renverra 0 si vrai.

Actuellement, votre conditionnel vérifie si search() retournera > 0 , ce qui n’est pas ce que vous voulez.

Ce que vous devriez faire, c’est vérifier s’il est supérieur > -1 :

 if (search_name.search("cate_no=24") > -1) 

Bien que , comme je l’ai mentionné dans la première révision de ma réponse, il serait préférable et plus rapide d’utiliser indexOf() ( search() est censé être utilisé lorsqu’il s’agit d’expressions régulières, pas pour de simples recherches de chaînes).

 if (search_name.indexOf("cate_no=24") > -1) 

search ne vous donne que la chaîne. ce sera dans votre cas ?cate_no=24

Nous laissons donc la première partie telle quelle et essayons de trouver la valeur souhaitée dans search_name sous search_name de chaîne.

 var search_name = location.search; 

C’est ainsi que nous pouvons trouver l’index du motif désiré.

 if (search_name.indexOf("cate_no=24") > 0) { $(".cate_new a").addClass("active"); } 

Mon blog personnel étant statique, je devais également comprendre comment faire cela sans PHP ni aucun autre code côté serveur.

Ce morceau de code récupère le chemin de l’URL actuelle. Par exemple, si vous êtes sur http://exemple.com/about , il renverrait la chaîne '/about/' . À partir de là, vous écrivez une simple condition pour append une classe au lien que vous sélectionnez.

 var currentURL = window.location.pathname.toSsortingng(); console.log(currentURL); if (currentURL = '/about/') { $('a#about').addClass('active') } else if (currentURL = '/work/') { ... } 

Cela pourrait être développé pour extraire les atsortingbuts href d’un tableau de liens avec une certaine classe ( .nav-items , par exemple) et append la classe active à n’importe quel élément pour lequel href correspond à la chaîne renvoyée.

Essaye ça

 
  • ">