Question

J'ai une barre de navigation latérale qui répertorie les titres d'entrée blog sur le côté de la page. Je suis en train d'écrire une jquery qui va vérifier le texte dans le titre de la page d'entrée de blog complet en cours et correspondre avec le titre correspondant dans la barre de navigation latérale afin que je puisse appliquer une classe de style pour un lien d'état actif ... mais je ne suis pas tout à fait l'obtenir! Voici le lien vers une page d'exemple: http: // NCW commercial .com / property-annonces / Eastpoint-plaza-lot.html , et ci-dessous est mon code actuel. J'ai aussi essayé d'utiliser. Mais contient ne pouvait pas comprendre comment obtenir que de travailler avec une variable plutôt que du texte directement

$('.single-journal-entry-wrapper .journal-entry .title').each(function(){ 
      var activeTitle = $(this).text();
      $(".feedburnerFeedBlock .headline a").filter(function(index) {
         return $(this).text() == "activeTitle";
      }).parent().addClass("activeTitle");
}); 
Était-ce utile?

La solution

Je pense que vous êtes très très proche (en supposant que les sélecteurs sont corrects). Il suffit d'enlever les guillemets autour activeTitle (sinon vous comparez contre la chaîne "activeTitle"):

$('.single-journal-entry-wrapper .journal-entry .title a').each(function(){ 
      var activeTitle = $(this).text();
      $("#sidebar1 .section .headline a").filter(function(index) {
         return $(this).text() == activeTitle;
      }).parent().addClass("activeTitle");
});

Vous pouvez également utiliser la :contains() sélecteur:

$('.single-journal-entry-wrapper .journal-entry .title a').each(function(){ 
      var activeTitle = $(this).text();
      $("#sidebar1 .section .headline a:contains('" + activeTitle + "')")
      .parent().addClass("activeTitle");
});

Le lien vers la page n'aide pas beaucoup. D'une certaine façon, je ne vois pas quel titre vous voulez correspondre avec quel lien. Désolé.

Mise à jour:

Ok je compris. Le problème était que les deux chaînes (le titre et celui du lien ne correspondait pas à parce que le titre avait une   en elle (Eastpoint Plaza Lot) où le lien dans la barre latérale n'avait pas. Et bien que cela est converti en un blanc si vous appelez .text(), il ne correspond pas à une certaine façon.

Maintenant, cela pourrait être résolu par obtenir le titre par .html() et remplacer le   avec un espace:

$('.single-journal-entry-wrapper .journal-entry .title a').each(function(){ 
      var activeTitle = $(this).html().replace(' ', ' ');
      $("#sidebar1 .section .headline a:contains('" + activeTitle + "')")
      .parent().addClass("activeTitle");    
});

Pour les tests, je copiais tout votre code HTML et il fonctionne pour moi. Essaie. Je pense que le plus gros problème est que les titres peuvent avoir des caractères codés HTML, donc trouver une bibliothèque qui les convertir si vous avez plus de problèmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top