Pregunta

Tengo una barra de navegación lateral que enumera los títulos de las entradas del blog al costado de la página.Estoy intentando escribir algo de jquery que verifique el texto en el título de la página de entrada completa del blog actual y lo haga coincidir con el título correspondiente en la barra de navegación lateral para poder aplicar una clase de estilo para un enlace de estado activo...¡pero no lo entiendo del todo!Aquí está el enlace a una página de ejemplo: http://ncw-commercial.com/property-listings/eastpoint-plaza-lot.html, y debajo está mi código actual.También intenté usar :contains pero no pude descubrir cómo hacer que funcione con una variable en lugar de texto directo.

$('.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");
}); 
¿Fue útil?

Solución

creo que está muy, muy cerca (asumiendo que los selectores son correctos). Basta con retirar las comillas alrededor de activeTitle (de lo contrario se está comparando contra el "activeTitle" cadena):

$('.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");
});

También puede utilizar el :contains() de selección:

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

El enlace a la página no está ayudando mucho. De alguna manera, no veo qué título que desea hacer coincidir con las que enlace. Lo sentimos.

Actualización:

Ok lo he descubierto. El problema era que ambas cadenas (el título y el que está en el enlace no encontró ya el título tenía un   en ella (Eastpoint Plaza Lot), donde el enlace en la barra lateral no lo había hecho. Y aunque esto se convierte en un espacio en blanco si se llama .text(), que de alguna manera no coincide.

Ahora bien, esto podría ser resuelto por conseguir el título a través de .html() y reemplazar el   con un espacio:

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

Para probar que copiar todo el código HTML y funciona para mí ahora. Darle una oportunidad. Creo que el mayor problema es que los títulos pueden tener caracteres HTML codificado en el mismo, por lo que encontrar una biblioteca que les convierte si llegas a tener más problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top