Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Match поиск совпадений (https://javascript.ru/forum/misc/80825-match-poisk-sovpadenijj.html)

zhenia3003 09.08.2020 07:34

Match поиск совпадений
 
Вложений: 1
Если ссылка в браузере совпадает с атрибутом href в теге A, выделяем тег А через класс active, все работает отлично, НО почему первый тег А (кнопка Главная) всегда подсвечен? Как это исправить?
https://javascript.ru/forum/attachme...d=159694761 8
$('nav ul li a').each(function()
{
    if(decodeURI(window.location.pathname).match($(this).attr('href')))
    {
    	$(this).addClass('active');
    }
});

<nav>
	<ul>
		<li><a href="/">Главная</a></li>
		<li><a href="/view/">Популярное</a></li>
		<li><a href="/com/">Обсуждаемое</a></li>
		<li><a href="/rand/">Случайное</a></li>
	</ul>
</nav>

рони 09.08.2020 08:27

zhenia3003,
var li = document.querySelectorAll('nav ul li a'), index = 0, path = decodeURI(window.location.pathname);
[...li].forEach((el, i) => path.match(el.getAttribute('href')) && (index = i));
li[index].classList.add('active');

zhenia3003 09.08.2020 10:17

Отличный пример, работает, но хочу понять, почему на Jquery не работает?

рони 09.08.2020 10:45

Цитата:

Сообщение от zhenia3003
почему на Jquery не работает?

работает и на Jquery, но потому что символ / есть в каждой ссылке, то идёт установка класса, на первом пункте меню.


Часовой пояс GMT +3, время: 13:32.