Подскажите, как выделить активный пункт меню
Всем привет,
знаю, что тема не раз поднималась, в том числе и на этом форуме, но у меня возникли проблемы с реализацией. Провел часа 4 в гугле, но работающего для меня кода не нашел. Итак, есть меню: <div class="top_menu"> <ul> <li><a href="/page1/">Страница 1</a></li> <li><a href="/page2/">Страница 2</a></li> <li><a href="/page3/">Страница 3</a></li> </ul> </div> Нужно, чтобы при нахождении на страницах, отличных от page1, page2, page3 все выглядело как выше, а при нахождении, к примеру, на странице www.site.tld/page2/ или www.site.tld/page2/subpage/ к li добавлялся нужный класс, т.е. <li class="current"><a href="/page2/">Страница 2</a></li> Логика понятна - пропарсить все li из дива с классом top_menu на предмет тега a c атрибутом href, совпадающим с url текущей страницы, и в нужный li добавить класс current. Но ни один из примеров, найденных мной, на моем сайте не заработал (js в браузере включен, jquery подгружен, другие скрипты выполняются корректно). Т.к. условия таковы, что сайт строится на шаблоне, в котором не обрабатывается php и в котором css во внешнем файле, ничего кроме jquery здесь не поможет. Подскажите, плз, нужный код. |
Как-то так:
$('div.top_menu li').each(function () {if (this.getElementsByTagName("a")[0].href == location.href) this.className = "current";});
|
Цитата:
|
abc_ua,
спасибо, Ваш код работает, но только для случая нахождения на странице /page2/, на подстраницах - не работает. Подскажите, есть ли возможность проверять не точное соответствие location.href, а наличие в нем? ksa, страницы генерятся CMS, а она не обрабатывает никакой серверный язык в шаблонах, так что можно считать, что нет. Сложный случай, я знаю :) |
попробуйте document.URL
|
конкретно для вашего случая подойдёт так
$('DIV.top_menu A').each(function () {
var re = new RegExp('^' + this.href);
if(re.test(document.location.pathname)) {
this.parentNode.className = "current";
}
});
|
Цитата:
как пример:
var array = ["location", "host", "ya.ru/1", "ya.ru/2", "ya.ru/3", "можно", "нельзя"];
var host = window[array[0]][array[1]];
switch(host){
case array[2] : alert(array[2]);
break;
case array[3] : alert(array[3]);
break;
case array[4] : alert(array[4]);
break;
default : alert('Запускать скрипт на ' + host + ' ' + array[6] + ',\nно ' + array[5] + ' тут:\n' + array[2] + '\n' + array[3] + '\n'+ array[4])
}
|
Цитата:
но если для повышения опыта, конечно, зачёт! |
document.URL не возвратит полный адрес?
|
А как сделать тоже самое...
А как сделать тоже самое... только чтобы class="current" находился не в <li> а в <a href"#" class="current">?
|
| Часовой пояс GMT +3, время: 20:20. |