Используйте jQuery, чтобы соответствовать переменным тексту?
-
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-закодированные символы в нем, поэтому найдите библиотеку, которая преобразует их, если вы столкнулись с большим количеством проблем.