Подскажите, как выделить активный пункт меню
Всем привет,
знаю, что тема не раз поднималась, в том числе и на этом форуме, но у меня возникли проблемы с реализацией. Провел часа 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:35. |