Используйте jQuery, чтобы соответствовать переменным тексту?

StackOverflow https://stackoverflow.com/questions/2610305

  •  25-09-2019
  •  | 
  •  

Вопрос

У меня есть навигация боковой панели, которая перечисляет заголовки входа в блоге по боковой стороне страницы. Я пытаюсь написать какой-нибудь jQuery, который проверит текст в заголовке текущей полной страницы вступа в блоге и сопоставит ее с соответствующим заголовками в навигации боковой панели, чтобы я мог применить класс в стиле для активной линии связи ... Но я не совсем понимаю! Вот ссылка на пример страницы: http://ncw-commercial.com/property-listings/eastpoint-plaza-lot.html., и ниже мой текущий код. Я также попробовал использовать: содержит но не мог понять, как получить это для работы с переменной, а не прямым текстом.

$('.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");
}); 
Это было полезно?

Решение

Я думаю, что вы очень близки (при условии, что селекторы правильные). Просто удалите цитаты вокруг activeTitle (в противном случае вы сравниваете со строкой "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");
});

Вы также можете использовать :contains() Селектор:

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

Ссылка на страницу не помогает. Каким-то образом я не вижу, какой заголовок вы хотите сопоставить с какой ссылкой. Извиняюсь.

Обновлять:

Хорошо, я понял это. Проблема была, что обе строки (название и тот, что в ссылке не совпадали потому что Название имело   в этом (Eastpoint Plaza Lot) где ссылка на боковой панели не было. И хотя это преобразуется в бланк, если вы звоните .text(), это как-то не совпадает.

Теперь это можно решить, получив название через .html() и заменить   с пространством:

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

Для тестирования я скопировал весь ваш HTML-код, и это работает для меня сейчас. Дайте это попробовать. Я думаю, что самая большая проблема в том, что заголовки могут иметь HTML-закодированные символы в нем, поэтому найдите библиотеку, которая преобразует их, если вы столкнулись с большим количеством проблем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top