Przepraszam, jeśli na to pytanie została już udzielona odpowiedź. Próbowałem szukać rozwiązań, ale nie mogłem znaleźć żadnego pasującego do mojego kodu. Wciąż jestem nowy w jQuery.
Mam dwa różne rodzaje lepkich menu dla dwóch różnych stron. Oto kod dla obu.
$(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();
});
});
Mój problem polega na tym, że kod przyklejonego menu bocznego na dole nie działa, ponieważ druga linia kodu wywołuje var contentNav = $('.content-nav').offset().top;
błąd o treści „Uncaught TypeError: Cannot read property 'top' of undefined”. W rzeczywistości żaden inny kod jQuery poniżej tej drugiej linii w ogóle nie działa, dopóki nie zostanie umieszczony nad nią.
Po pewnych badaniach wydaje mi się, że problem polega na tym, że $('.content-nav').offset().top
nie można znaleźć określonego selektora, ponieważ znajduje się on na innej stronie. Jeśli tak, nie mogę znaleźć rozwiązania.