Я купил шаблон css. который реализует навигацию таким образом.
<li class="current"><a href="services.html">Services</a></li>
<li><a href="news.html">News</a></li>
<li><a href="portfolio.html">Portfolio</a></li>
<li><a href="elements.html">Elements</a></li>
<li><a href="contact.html">Contact</a></li>
Он содержит навигационный тег в каждом html файле и помечает класс элемента списка как текущий для текущей страницы.
Теперь я конвертирую это в макет главной страницы. Как я могу определить текущую страницу и добавить класс в элемент списка с помощью JavaScript. Или любое другое решение этой проблемы.
Это простой способ сделать это (используя jQuery):
function syncMenu () {
var url = window.location.href, pageStart, pageEnd, pageName;
pageStart = url.lastIndexOf("/") + 1;
pageEnd = url.lastIndexOf(".");
pageName = url.substring(pageStart, pageEnd);
$('#Menu').find('li').removeClass('selected');
$('#Menu').find('a[href^="' + pageName + '"]').parent().addClass('current');
}
Вызовите эту функцию в первую очередь, когда ваша страница загружается, т.е. первая вещь в document.ready
.
Идея заключается в том, что у вас есть имя страницы в качестве anchor
href
. Мы извлекаем имя страницы из текущего url и используем это для поиска a
во всех li
который содержит это имя страницы, как href
. Добавление класса (текущий в вашем случае) к этому li
.
$('#elemId').text(pageName)
.