@seregindev

Как заставить работать скрипт активного элемента при скролле?

Доброго времени суток!
Столкнулся с такой проблемой, у меня есть скрипт, который добавляет класс active при скроле, если встречается див с якорем, который указан в ссылке
Но проблема в том, что у меня ссылки имеют следующий вид "ссылка на главную страницу/#якорь"
Но если убрать ссылку на главную страницу всё работает.

И с этим связана ещё одна проблема, ссылки у меня имеют такой вид из-за того, что у меня имеется дочерняя страница, и единое меню.
Находясь на дочерке при клике на ссылку должен происходить переход на главную страницу и скролл к тому якорю, который выбран.

Извиняюсь за глупые вопросы, совсем не знаю как это решить о.о
Буду очень благодарен вам!

$(document).ready(function () {
//плавный скролл по клику
  $('.header-site').on('click', 'a[href*="#"]', function(event){
      event.preventDefault();
      var target_offset = $(this.hash).offset() ? $(this.hash).offset().top : 0;
      var customoffset = 106;
      $('html, body').animate({scrollTop:target_offset - customoffset}, 400);
      $("a.active").removeClass("active");
      $(this).addClass("active");
      overActive();
      })
  $(document).on("scroll", onScroll);
})


function onScroll(event){
//активный элемент при скролле
    var scrollPos = $(document).scrollTop();
    $('.nav-horizontal .menu a').each(function () {
        var currLink = $(this);
        var refElement = $(currLink.attr("href"));
        if (refElement.position().top  <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
            $('.nav-horizontal .menu a.active').removeClass("active");
            currLink.addClass("active");
        }
        else{
            currLink.removeClass("active");
        }
    });
}
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 1
@nugget-ekb
Верстальщик
"И с этим связана ещё одна проблема, ссылки у меня имеют такой вид из-за того, что у меня имеется дочерняя страница, и единое меню."
Я так и не понял для чего такие ссылки что там за дочерняя страница и меню?)) ссылку нужно на страницу.
ИМХО переделать нужно по нормальному и не изобретать колесо))
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы