Есть такой скрипт
И меню
<ul class="mnu__list header__mnu">
<li class="mnu__item active">
<a href="#section1" class="mnu__link">Пункт 1</a>
</li>
<li class="mnu__item">
<a href="#section2" class="mnu__link">Пункт 2</a>
</li>
<li class="mnu__item">
<a href="#section3" class="mnu__link">Пункт 3</a>
</li>
<li class="mnu__item">
<a href="#section4" class="mnu__link">Пункт 4</a>
</li>
</ul>
<div id="section1"></div>
<div id="section2"></div>
<div id="section3"></div>
<div id="section4"></div>
Код js:
var lastId, topMenu = $(".mnu__list"),
topMenuHeight = topMenu.outerHeight(),
menuItems = topMenu.find(".mnu__link"),
scrollItems = menuItems.map(function () {
var item = $($(this).attr("href"));
if (item.length) {
return item;
}
});
menuItems.click(function (e) {
var header_height = $('header').outerHeight();
e.preventDefault();
var href = $(this).attr("href"), offsetTop = href === "#" ? 0 : $(href).offset().top;
$('html, body').stop().animate({scrollTop: offsetTop}, 800);
});
$(window).scroll(function () {
var fromTop = $(this).scrollTop() + header_height + 1;
var cur = scrollItems.map(function () {
if ($(this).offset().top < fromTop) return this;
});
cur = cur[cur.length - 1];
var id = cur && cur.length ? cur[0].id : "";
if (lastId !== id) {
lastId = id;
menuItems.parent().removeClass("active").end().filter("[href*='#" + id + "']").parent().addClass("active");
}
});
Выдает такую ошибку
Скрипт на codepen
https://codepen.io/anon/pen/LBpqgN