К сожалению, если вы не используете динамический язык для отображения ваших страниц, трудно обеспечить аккуратное и опрятное решение для этого.
Одна из возможностей - использовать атрибут якоря href
, которыйбудет равен части строки window.location.pathname
.
Например, предположим, что ваш сайт находится в корне сервера, а HTML-страницы называются index.html
, work.html
и т. д. Затем вы можете получитьpathname
(часть URL-адреса после имени домена) и сопоставьте его с атрибутом href
привязки.
Ваша навигация может выглядеть следующим образом:
<nav>
<ul>
<li><a href="index.html">Index</a></li>
<li><a href="work.html">Work</a></li>
<li><a href="projects.html">Projects</a></li>
<li><a href="hobbies.html">Hobbies</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
И вашаJavascript может выглядеть так:
var pathname = window.location.pathname;
// trim the first slash
var substr = pathname.substr(1);
$('nav').find('li a[href="' + substr + '"]').addClass('current');
Поэтому, когда вы используете index.html
, переменная substr
равна index.html
, поэтому элемент списка с data-page-name
равен index.html
получает класс current
.
. Это правильное решение: вам нужно только одно дерево навигации, поскольку вам не нужно редактировать каждую страницу , чтобы добавить идентификатор или класс вэлемент.Вы делаете попадаете в беспорядок, если вы изменяете имя файла, потому что вы должны изменить атрибут data-page-name
в каждом файле (хотя вы должны будете изменить якорь href
в любом случае).