@Nub_Ready
Начинающий Front-end разработчик Опыт >6 месяцев

Как активировать функцию в jQuery при загрузке страницы?

Вообщем есть у меня навигация:
<nav class="nav">
            <a class="nav__link" href="index.html">Главная</a>
            <a class="nav__link" href="services.html">Услуги</a>
            <a class="nav__link" href="portfolio.html">Портфолио</a>
         </nav>


при переходе на страницу добавляется класс "active"
Осуществляется все это не замысловатой функцией:
$(function() {
          var loc = window.location.href;
     $('.nav [href]').each(function() {
         if (this.href == loc) {
            $(this).addClass('active');
        }
        });
    });


Суть проблемы в том, что при загрузке страницы к элементу:
<a class="nav__link" href="index.html">Главная</a>

не присваивается класс "active", нужно нажать на этот элемент и тогда все заработает.
  • Вопрос задан
  • 1263 просмотра
Пригласить эксперта
Ответы на вопрос 3
rockfeeler
@rockfeeler
Фронтендер, дизайнер, верстальщик-перфекционист
Обращение в функции идет к элементам с классом nav, так почему же класс active должен добавиться к элементу с классом nav__link?

<div id="wrap">

	<div class="nav">
		<a href="http://test.test/test.html" class="nav__link">LINK</a>
		<a href="" class="nav__link">LINK</a>
		<a href="" class="nav__link">LINK</a>
		<a href="" class="nav__link">LINK</a>
	</div>

</div>


$(function () {
	var loc = window.location.href;
	
	$('.nav__link').each(function () {
		var theHref = $(this).attr('href');
		
		if (theHref === loc) {
			$(this).addClass('active');
		}
	});
});
Ответ написан
@RuComMarket
Битрикс FullStack разработчик
попробуй первую строку заменить на:
$(document).ready(function(){
Ответ написан
irishmann
@irishmann
Научись пользоваться дебаггером
ready() - выполняет функцию, как только DOM полностью загрузился.
$(document).ready(function() {
    // пиши сюда свой код
});
Ответ написан
Ваш ответ на вопрос

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

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