@losttheory

Как получить часть href jquery?

Есть такой код
var url =window.location.pathname; // получаем адрес из адресной строки
	$('.main_menu li a').each(function() { // для каждой ссылки  
        var linkHref = $(this).attr('href'); //получаем href 
        if (url == linkHref){ //сравниваем полученное из адресной строки с href ссылки
        // при совпадении присваиваем класс
        $(this).closest('.main_menu li').addClass('active');
        $(this).parents('.main_menu>ul>li').addClass('active');
     }
  });

Мне нужно чтобы он выбирал не только полное соответствие url, а до определенного вложения.
Например - сейчас у меня работает когда url: site.ru/products/trusted-devices/motherboards/
а вот когда url: site.ru/products/trusted-devices/motherboards/123.html уже не работает.
Как получать url только до последнего "/" ?
  • Вопрос задан
  • 1174 просмотра
Решения вопроса 1
KickeRocK
@KickeRocK
FrontFinish
Знаю, что можно регуляркой, но первое что пришло в голову.
var url = window.location.pathname; // получаем адрес из адресной строки
var newUrl = url.split('/').slice(0,-1).join('/')+'/';
  $('.main_menu li a').each(function() { // для каждой ссылки  
        var linkHref = $(this).attr('href'); //получаем href 
        if (newUrl == linkHref){ //сравниваем полученное из адресной строки с href ссылки
        // при совпадении присваиваем класс
        $(this).closest('.main_menu li').addClass('active');
        $(this).parents('.main_menu>ul>li').addClass('active');
     }
  });
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@iljaGolubev
var url = window.location.pathname; 
var searchUrl = url.split('/').slice(0,-1).join('/')+'/';
/*  все адреса на странице без указания документа должны заканчиваться на "/" 
( /motherboards/ и /motherboards  в данном случае -  важное различие) */
$(".main_menu li a[href*='" + searchUrl + "']").
    .closest('.main_menu li').addClass('active')
    .end()
    .parents('.main_menu>ul>li').addClass('active');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы