如果这个问题已经回答了,我很抱歉。我尝试过寻找解决方案,但找不到适合我的代码的解决方案。我仍然是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:无法读取未定义的属性‘顶部’”。事实上,除非将其他jQuery代码放在第二行的上方,否则它们根本不会工作。
经过研究,我认为问题在于$('.content-nav').offset().top
找不到指定的选择器,因为它在不同的页面上。如果是这样的话,我找不到解决方案。
发布于 2013-11-24 21:45:04
在尝试获取其偏移量之前,请检查jQuery对象是否包含任何元素:
var nav = $('.content-nav');
if (nav.length) {
var contentNav = nav.offset().top;
...continue to set up the menu
}
发布于 2015-08-24 03:28:24
您最有可能遇到的问题是,页面中某处存在指向不存在的锚点的链接。例如,假设您有以下内容:
<a href="#examples">Skip to examples</a>
页面中必须有一个具有该id的元素,例如:
<div id="examples">Here are the examples</div>
所以要确保页面内的每个链接都与其对应的锚点相匹配。
发布于 2017-03-22 23:02:09
我遇到了同样的问题(“未捕获TypeError:无法读取未定义的属性'top‘”)
我尝试了我能找到的所有解决方案,但没有任何帮助。但后来我发现我的DIV有两个身份证。
所以,我删除了第二个ID,它起作用了。
我只希望有人早点告诉我检查我的身份证))
https://stackoverflow.com/questions/20175094
复制相似问题