Я создаю меню для сайта, который не имеет никаких серверных возможностей. Из-за этого мой единственный способ динамического выделения текущей страницы в меню (среди прочих изменений) - проверить текущий URL и сравнить его с путем к текущему файлу; когда они совпадают, я добавляю класс «current», а также изменяю значения некоторых других атрибутов.
Проблема в том, что мое регулярное выражение соответствует только значениям href, которые представляют собой одно имя файла, а не относительные пути к другим папкам. Например, если мое меню хранится в папке "category", href="page.html"
будет соответствовать "http://www.example.com/category/page.html", но если я использовал href="../category/page.html"
, оно не будет соответствовать. Та же проблема, если я использую корневой относительный путь в href.
Мое текущее регулярное выражение /[^\/]+$/)[0]
. Вот как выглядит весь скрипт:
$(document).ready( function () {
var pathname = (window.location.pathname.match(/[^\/]+$/)[0]);
var currA = $("#nav-sub li a[href='" + pathname + "']");
var treeParent = currA.closest(".tree-parent");
treeParent.attr('aria-expanded', 'true');
currA.parents("li").addClass("current");
treeParent.children('a').first().attr('tabindex','0');
});