Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.08.2014, 09:09
Интересующийся
Отправить личное сообщение для eXTrEMe888 Посмотреть профиль Найти все сообщения от eXTrEMe888
 
Регистрация: 17.04.2012
Сообщений: 14

Сделать класс активным для всех путей URL
Доброго времени суток, форумчане!
Собственно, столкнулся вот с такой задачей: на сайте есть меню, нужно для активного текущего пункта меню (для его подсветки) каждый раз устанавливать class="active". Эту проблему решил вот так:
jQuery(document).ready(function() {
    $('#navigation-main a[href="'+ location.pathname + '"]').addClass('active');
});

Тут все работает. Однако, вопрос вот в чем: если я, к примеру, перехожу в пункт меню "Новости" по адресу: http://example.com/news, то пункт меню подсвечивается и class="active" устанавливается без проблем, а что если я смотрю какую-то новость данного раздела с адресом: http://example.com/news/some-news - то в таком случае ссылка уже не подсвечивается. Выход - использование регулярки, или что посоветуете?

Заранее большое спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 20.08.2014, 09:13
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Почему класс ставит клиент, а не сервер во время генерации страницы?
Ответить с цитированием
  #3 (permalink)  
Старый 20.08.2014, 09:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от eXTrEMe888
по адресу: http://example.com/news, то пункт меню подсвечивается и class="active" устанавливается без проблем, а что если я смотрю какую-то новость данного раздела с адресом: http://example.com/news/some-news - то в таком случае ссылка уже не подсвечивается
Измени селектор...
http://jquery-docs.ru/Selectors/attr...attributevalue
Ответить с цитированием
  #4 (permalink)  
Старый 20.08.2014, 09:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от WorM32
Почему класс ставит клиент, а не сервер во время генерации страницы?
Не факт, что у ТСа вообще есть генерация...
Ответить с цитированием
  #5 (permalink)  
Старый 20.08.2014, 09:59
Интересующийся
Отправить личное сообщение для eXTrEMe888 Посмотреть профиль Найти все сообщения от eXTrEMe888
 
Регистрация: 17.04.2012
Сообщений: 14

Сообщение от WorM32 Посмотреть сообщение
Почему класс ставит клиент, а не сервер во время генерации страницы?
хм...а что необходимо сделать, чтобы класс ставил сервер? в bootstrap'е там вроде с подобными штуками проблем нет, однако в моем случае здесь обычная пользовательская верстка...
Сообщение от ksa Посмотреть сообщение
Измени селектор...
http://jquery-docs.ru/Selectors/attr...attributevalue
изменить на вот такой? (применить class="active" всем ссылкам, начинающимся с данной?):
jQuery(document).ready(function() {
    $('#navigation-main a[href^="'+ location.pathname + '"]').addClass('active');
});

пробовал - по-прежнему, безрезультатно...
Ответить с цитированием
  #6 (permalink)  
Старый 20.08.2014, 10:37
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

eXTrEMe888,
В данном случае, по хорошему, сервер должен определить текущий раздел сайта и ставить класс нужному элементу. Как минимум это поможет избежать "моргания" элемента, в следствие отложенной установки класса.
Ответить с цитированием
  #7 (permalink)  
Старый 20.08.2014, 10:59
Интересующийся
Отправить личное сообщение для eXTrEMe888 Посмотреть профиль Найти все сообщения от eXTrEMe888
 
Регистрация: 17.04.2012
Сообщений: 14

Вы правы. На данный момент как раз-таки пункт меню выделяется "с опозданием", не так как хотелось бы (чтобы до/при загрузке страницы). А как и какими средствами лучше это сделать, не подскажете? Буду благодарен за помощь.
Ответить с цитированием
  #8 (permalink)  
Старый 20.08.2014, 11:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от eXTrEMe888 Посмотреть сообщение
изменить на вот такой? (применить class="active" всем ссылкам, начинающимся с данной?):
jQuery(document).ready(function() {
    $('#navigation-main a[href^="'+ location.pathname + '"]').addClass('active');
});
Тебе нужна только некая часть из location.pathname, неужели это не понятно из твоего же примера выше... Там есть только некая общая часть.
Ответить с цитированием
  #9 (permalink)  
Старый 20.08.2014, 12:19
Интересующийся
Отправить личное сообщение для eXTrEMe888 Посмотреть профиль Найти все сообщения от eXTrEMe888
 
Регистрация: 17.04.2012
Сообщений: 14

Сообщение от ksa Посмотреть сообщение
Тебе нужна только некая часть из location.pathname, неужели это не понятно из твоего же примера выше... Там есть только некая общая часть.
если честно - не совсем понял о чем ты. Да, само собой что правило class="active" должно распространяться не только на ссылки меню (они статичны), но и на ссылки, адрес которых начинается с этих самых ссылок меню. То, что ты процитировал - у меня все равно не работает. Вот я и пытаюсь выяснить, как лучше это сделать. Товарищ WorM32 посоветовал делать такие дела на сервере - опять же, как?))
Ответить с цитированием
  #10 (permalink)  
Старый 20.08.2014, 13:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от eXTrEMe888
Товарищ WorM32 посоветовал делать такие дела на сервере
Это самый лучший способ.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать ссылки из файла CSS корректными для всех директрорий сайта? GrEb (X)HTML/CSS 7 28.01.2020 12:56
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Пошаговый вывод скрипта для IE всех версий. Zidky Элементы интерфейса 10 17.06.2009 18:27
Как присвоить текст строке состояния для всех браузеров? Tend Общие вопросы Javascript 4 14.05.2009 16:38