Использовать jQuery для сопоставления с переменным текстом? - PullRequest
0 голосов
/ 09 апреля 2010

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

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

1 Ответ

1 голос
/ 09 апреля 2010

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

...