Обновление : Я неправильно понял вопрос.Перечитывая его, звучит так, как будто вы хотите быть уверены, что не соответствует всем index.html
с, а только тому, в котором вы находитесь (что на самом деле имеет больше смысла).
В этом случае вы можете сделать это:
var path = window.location.href; // Just grabbing a handy reference to it
$('ul a').each(function() {
if (this.href === path) {
$(this).addClass('active');
}
});
... потому что свойство href
(которое не совпадает с атрибутом "href")элемент DOM - это абсолютный путь .
Живой пример
Очевидно, чем больше вы можете сделать, чтобыПервоначальный селектор (в пределах разумного), тем лучше.Например, если все это находится в некоторой структуре навигации, только работа в этой структуре будет более эффективной.
Кроме того, если будет много совпадений, вы можете избежать выполненияjQuery-оболочка при добавлении класса, если вам нравится:
if (this.href === path) {
this.className += " active"; // note the space
}
Исходный ответ :
Если атрибуты href
всегда будут иметь /
перед частью имени файла, затем:
var TheP = window.location.pathname.split('/');
var HeRe = TheP[TheP.length-1];
$('ul a[href$="/' + HeRe + '"]').addClass('active');
, использующий атрибут , заканчивающийся селектором для поиска соответствующих ссылок.
Если атрибуты href
могут иногдабыть просто index.html
или подобным, вы можете сделать это:
var TheP = window.location.pathname.split('/');
var HeRe = TheP[TheP.length-1];
$('ul a[href$="/' + HeRe + '"], ul a[href="' + HeRe + '"]').addClass('active');
..., который поймает те, с /
перед ними, используя селектор «заканчивается», а такжегде точное совпадение выполняется с помощью селектора «равно».