Javascript.RU

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

снова про выделение активных пунктов
перелапатил кучу страниц, в т.ч. на этом сайте. все выделают сам тег <a>, а мне надо <li>, в котором ссылка находится. вот рабочий вариант
$(function () {                             // когда страница загружена
    $('.sf-menu a').each(function () {    // проходим по нужным нам ссылками
        var location = window.location.href // переменная с адресом страницы
        var link = this.href                // переменная с url ссылки
        var result = location.match(link);  // результат возвращает объект если совпадение найдено и null при обратном

        if(result != null) {                // если НЕ равно null
            $(this).addClass('current');    // добавляем класс
        }
    });
});

но надо чтобы выделялось так <li class="current">
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2014, 14:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от yozuul
$(this).addClass('current');
$(this).parent().addClass('current');
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2014, 15:33
Аспирант
Отправить личное сообщение для yozuul Посмотреть профиль Найти все сообщения от yozuul
 
Регистрация: 14.06.2013
Сообщений: 64

спасибо. только, почему-то, с главной current не удаляется.
только сейчас заметил, когда стили стали отображаться нормально.
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2014, 15:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

yozuul,
так неназначайте изначально или удалите принудительно
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2014, 15:58
Аспирант
Отправить личное сообщение для yozuul Посмотреть профиль Найти все сообщения от yozuul
 
Регистрация: 14.06.2013
Сообщений: 64

дак я и не назначаю. при загрузке главной страницы сюда
<li><a href="/">Главная</a></li>
тег добавляется через скрипт. но при переходе дальше, он не удаляется, как это происходит с другими разделами.
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2014, 16:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

$(function () {                             // когда страница загружена
    $('.sf-menu a').each(function () {    // проходим по нужным нам ссылками
        var location = window.location.href // переменная с адресом страницы
        var link = this.href                // переменная с url ссылки
        var result = location.match(link);  // результат возвращает объект если совпадение найдено и null при обратном
 
        if(result != null) {                // если НЕ равно null
            $(this).parent().addClass('current');    // добавляем класс
        } else {
            $(this).parent().removeClass('current');    // удаляем класс
        }
    });
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2014, 16:28
Аспирант
Отправить личное сообщение для yozuul Посмотреть профиль Найти все сообщения от yozuul
 
Регистрация: 14.06.2013
Сообщений: 64

не работает. всё равно на главной висит current
Ответить с цитированием
  #8 (permalink)  
Старый 28.05.2014, 16:42
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Правильно, что висит, тк в коде выше главная всегда будет частью какой либо страницы)

Попробуйте так
$(function () {
    $('.sf-menu a').each(function () {
        var location = window.loсation.pathname,
            link = this.pathname;
        $(this).parent().toggleClass('current', location == link);
    });
});
Ответить с цитированием
  #9 (permalink)  
Старый 28.05.2014, 17:18
Аспирант
Отправить личное сообщение для yozuul Посмотреть профиль Найти все сообщения от yozuul
 
Регистрация: 14.06.2013
Сообщений: 64

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

Сообщение от yozuul Посмотреть сообщение
нет. так вообще не работает.
ну да, видимо условие неверно обрабатывается.
Для полной информации нужно было изначально кусок html с меню предоставить, чтобы не гадать)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Scroll menu, подсветка активных пунктов меню при скролле makissm21 AJAX и COMET 13 29.04.2017 19:28
И снова про увеличении картинки при наведении totalavitaminoz Общие вопросы Javascript 6 28.05.2014 07:57
Выделение активных пунктов многоуровневого меню на jQuery Letto Элементы интерфейса 2 04.12.2013 15:30
И снова про координаты мыши Jeer jQuery 15 21.03.2011 10:28