【发布时间】:2014-11-13 01:30:28
【问题描述】:
我正在尝试使用此 javascript 将侧边栏导航设置为偏移并随着滚动变得粘滞。错误是:
“无法读取未定义的属性'top'”
错误在var stickyNavTop = $('.toc').offset().top - 222;,它正在阻止其他js正常工作。
脚本:
// Sidebar Nav Sticky with Scroll
jQuery(document).ready(function() {
var stickyNavTop = $('.toc').offset().top - 222;
var stickyEnd = $('.content').height() - 111; // stores height of .content element
var praiseH = $('.praise').height(); //height of praise bar if present
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('.toc').addClass('sticky-nav');
$('.content').css('float','right'); //needs float:right; applied due to .sticky-nav class being positioned
} else {
$('.toc').removeClass('sticky-nav');
$('.content').css('float','left');
}
if ($(window).scrollTop() >= (stickyEnd - praiseH) ) {
// $('.toc').addClass('bottom'); removed for fadeIn/fadeOut
$('.toc').fadeOut('slow');
} else {
$('.toc').fadeIn('slow');
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
});
});
感谢任何有关如何解决此问题的帮助。谢谢!
【问题讨论】:
-
似乎 jQuery 无法访问对象
$('.toc')的属性。你确定它存在于 DOM 中吗? -
不,实际上它在某些页面上不存在,但是在每个页面上都会调用该脚本。猜猜我只需要针对特定页面启用它,或者如果它只存在,是否有调用它的方法?
-
您可以检查
$('.toc')是否存在,如果存在则运行stickyNav 函数。 -
谢谢,特里。我就是这样做的,它解决了这种情况。感谢帮助
标签: javascript jquery scroll undefined offset