Pergunta

Eu tenho uma navegação na barra lateral que lista os títulos de entrada do blog na lateral da página. Estou tentando escrever um jQuery que verificará o texto no título da página de entrada completa do blog atual e combiná -lo com o título correspondente na navegação na barra lateral para que eu possa aplicar uma classe ao estilo para um link de estado ativo ... Mas eu não estou entendendo bem! Aqui está o link para uma página de exemplo: http://ncw-commercial.com/property-listings/eastpoint-plaza-lot.html, e abaixo está o meu código atual. Eu também tentei usar: contém, mas não consegui descobrir como fazer isso funcionar com uma variável e não com texto direto.

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

Solução

Eu acho que você está muito próximo (assumindo que os seletores estejam corretos). Basta remover as citações activeTitle (caso contrário, você está comparando contra a string "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");
});

Você também pode usar o :contains() Seletor:

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

O link para a página não está ajudando muito. De alguma forma, não vejo qual título você deseja combinar com qual link. Desculpe.

Atualizar:

Ok, eu descobri. O problema era que ambas as cordas (o título e o do link não correspondem Porque O título tinha um   iniciar (Eastpoint Plaza Lot) onde o link na barra lateral não. E embora isso seja convertido em um espaço em branco se você ligar .text(), de alguma forma não corresponde.

Agora isso pode ser resolvido com o título via .html() e substitua o   com um espaço:

$('.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 testes, copiei todo o seu código HTML e ele funciona para mim agora. De uma chance. Eu acho que o maior problema é que os títulos podem ter caracteres codificados em HTML, então encontre uma biblioteca que os converta se você tiver mais problemas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top