Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   снова про выделение активных пунктов (https://javascript.ru/forum/jquery/47556-snova-pro-vydelenie-aktivnykh-punktov.html)

yozuul 28.05.2014 14:44

снова про выделение активных пунктов
 
перелапатил кучу страниц, в т.ч. на этом сайте. все выделают сам тег <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">

рони 28.05.2014 14:57

Цитата:

Сообщение от yozuul
$(this).addClass('current');

$(this).parent().addClass('current');

yozuul 28.05.2014 15:33

спасибо. только, почему-то, с главной current не удаляется.
только сейчас заметил, когда стили стали отображаться нормально.

рони 28.05.2014 15:41

yozuul,
так неназначайте изначально или удалите принудительно

yozuul 28.05.2014 15:58

дак я и не назначаю. при загрузке главной страницы сюда
<li><a href="/">Главная</a></li>
тег добавляется через скрипт. но при переходе дальше, он не удаляется, как это происходит с другими разделами.

devote 28.05.2014 16:02

$(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');    // удаляем класс
        }
    });
});

yozuul 28.05.2014 16:28

не работает. всё равно на главной висит current

WorM32 28.05.2014 16:42

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

Попробуйте так
$(function () {
    $('.sf-menu a').each(function () {
        var location = window.loсation.pathname,
            link = this.pathname;
        $(this).parent().toggleClass('current', location == link);
    });
});

yozuul 28.05.2014 17:18

нет. так вообще не работает.
ну да, видимо условие неверно обрабатывается.

WorM32 28.05.2014 17:21

Цитата:

Сообщение от yozuul (Сообщение 313843)
нет. так вообще не работает.
ну да, видимо условие неверно обрабатывается.

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


Часовой пояс GMT +3, время: 16:32.