@PKPG

Почему класс добавляется к каждой ссылке на странице?

Доброго дня!

Есть скрипт плавного перехода по якорям + добавления класса в пункт меню. Плавный скролл работает, но класс добавляется к любой ссылке на странице, если кликнуть, а должен только в меню. Я не понимаю в чем ошибка. Может кто-нибудь посмотреть из более опытных, пожалуйста.

Работу скрипта можно посмотреть на этой странице pvctruba.ru

скрипт
var menu_selector = ".menunav";
function onScroll(){
	var scroll_top = $(document).scrollTop();
	$(menu_selector + " a").each(function(){
		var hash = $(this).attr("href");
		var target = $(hash);
		if (target.position().top <= scroll_top && target.position().top + target.outerHeight() > scroll_top) {
			$(menu_selector + " li.activepath").removeClass("activepath");
			$(this).addClass("activepath");
		} else {
			$(this).removeClass("activepath");
		}
	});
}
$(document).ready(function () {
	$(document).on("scroll", onScroll);
	$("a[href^=#]").click(function(e){
		e.preventDefault();
		$(document).off("scroll");
		$(menu_selector + " a.activepath").removeClass("activepath");
		$(this).addClass("activepath");
		var hash = $(this).attr("href");
		var target = $(hash);
		$("html, body").animate({
		    scrollTop: target.offset().top
		}, 500, function(){
			window.location.hash = hash;
			$(document).on("scroll", onScroll);
		});
	});
});

$(document).ready(function(){
	$(".menunav").changeactivepathNav();
});
  • Вопрос задан
  • 32 просмотра
Решения вопроса 1
infern01it
@infern01it
учусь быть крутым front-end разработчиком :)
исправить $("a[href^=#]").click(function(e){ на $(".menunav a[href^=#]").click(function(e){
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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