未捕获的TypeError:无法读取未定义的属性“ top”

如果这个问题已经回答,我深表歉意。我尝试搜索解决方案,但找不到适合我的代码的任何解决方案。我还是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;会引发错误,提示“未捕获的TypeError:无法读取未定义的属性’top’”。实际上,除非将第二行以下的其他jQuery代码放在第二行之上,否则根本不会起作用。

经过一番研究,我认为问题在于$('.content-

nav').offset().top找不到指定的选择器,因为它在不同的页面上。如果是这样,我找不到解决方案。

回答:

在尝试获取其偏移量之前,请检查jQuery对象是否包含任何元素:

var nav = $('.content-nav');

if (nav.length) {

var contentNav = nav.offset().top;

...continue to set up the menu

}

以上是 未捕获的TypeError:无法读取未定义的属性“ top” 的全部内容, 来源链接: utcz.com/qa/425287.html

回到顶部