Tôi xin lỗi nếu câu hỏi này đã được trả lời. Tôi đã thử tìm kiếm các giải pháp nhưng không thể tìm thấy bất kỳ giải pháp nào phù hợp với mã của tôi. Tôi vẫn chưa quen với jQuery.
Tôi có hai loại menu dính khác nhau cho hai trang khác nhau. Đây là mã cho cả hai.
$(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();
});
});
Vấn đề của tôi là mã cho menu bên dính ở dưới cùng không hoạt động vì dòng mã thứ hai var contentNav = $('.content-nav').offset().top;
gây ra lỗi có nội dung "Uncaught TypeError: Cannot read property 'top' of undefined". Trên thực tế, không có mã jQuery nào khác bên dưới dòng thứ hai đó hoạt động trừ khi chúng được đặt ở trên nó.
Sau một số nghiên cứu, tôi nghĩ vấn đề là $('.content-nav').offset().top
không thể tìm thấy bộ chọn được chỉ định vì nó nằm trên một trang khác. Nếu vậy, tôi không thể tìm ra giải pháp.