Скрипт меняет класс навигации при скролле по секциям на странице.
var menu_selector = ".sticky-tabs";
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 + " a.active").removeClass("active");
$(this).addClass("active");
} else {
$(this).removeClass("active");
}
});
}
$(document).ready(function () {
$(document).on("scroll", onScroll);
$("a[href^=#]").click(function (e) {
e.preventDefault();
$(document).off("scroll");
$(menu_selector + " a.active").removeClass("active");
$(this).addClass("active");
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);
});
});
});
Есть такой вот скрипт и работает полностью корректно, но консоль при скролле пишет:
Uncaught TypeError: Cannot read property 'top' of undefined
at HTMLAnchorElement.<anonymous> (sticky.php:1287)
at Function.each (jquery.js:2)
at m.fn.init.each (jquery.js:2)
at HTMLDocument.onScroll (sticky.php:1284)
at HTMLDocument.dispatch (jquery.js:4)
at HTMLDocument.r.handle (jquery.js:4)
Строка 1287:
if (target.position().top <= scroll_top && target.position().top + target.outerHeight() > scroll_top) {
Строка 1284:
$(menu_selector + " a").each(function(){
Не могу понять в чём проблема, подскажите куда копать
В данном случае target.position() - возвращает undefined, а это возможно только в случае когда target не нашел элементов, удовлетворяющих селектору.
Кроме того в зависимости от версии jQuery при применении этого метода, так же может быть возвращено null, следовательно ошибка может меняться на
Uncaught TypeError: Cannot read property 'top' of null(…)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
задача состоит в том чтобы при клике на кнопкуbtn получить
Есть скрипт яндекс карт, на карте выбирается точка и адресс точки записывается в input:
Нужно реализовать событие, которое по клику должно затемнять блок, но затемнение должно происходить только после того как пользователь кликнул...
Есть некий набор элементов, по которым обрабатывается нажатиеКак вернуть именно тот селектор, по которому jQuery отловил нажатие?