Прошу прощения, если на этот вопрос уже был дан ответ. Я пробовал искать решения, но не нашел ни одного, подходящего для моего кода. Я все еще новичок в jQuery.
У меня есть два разных типа липких меню для двух разных страниц. Вот код для обоих.
$(document).ready(function () {
var contentNav = $('.content-nav').offset().top;
var stickyNav = function () {
var scrollTop = $(window).scrollTop();
if (scrollTop > contentNav) {
$('.content-nav').addClass('content-nav-sticky');
} else {;
$('.content-nav').removeClass('content-nav-sticky')
}
};
stickyNav();
$(window).scroll(function () {
stickyNav();
});
});
$(document).ready(function () {
var stickyNavTop = $('.nav-map').offset().top;
// var contentNav = $('.content-nav').offset().top;
var stickyNav = function () {
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('.nav-map').addClass('sticky');
// $('.content-nav').addClass('sticky');
} else {
$('.nav-map').removeClass('sticky');
// $('.content-nav').removeClass('sticky')
}
};
stickyNav();
$(window).scroll(function () {
stickyNav();
});
});
Моя проблема в том, что код для липкого бокового меню внизу не работает, потому что вторая строка кода вызывает var contentNav = $('.content-nav').offset().top;
ошибку, которая гласит: «Uncaught TypeError: Cannot read property 'top' of undefined». Фактически, никакой другой код jQuery ниже этой второй строки вообще не работает, если он не размещен над ней.
После некоторого исследования я думаю, что проблема в том, что $('.content-nav').offset().top
не удается найти указанный селектор, потому что он находится на другой странице. Если да, то я не могу найти решение.