不确定为什么它无法读取未定义的属性顶部。有人给了我这个代码,我正在重建网站的一部分。它事先工作,所以不确定是什么改变得到这个错误。如果您需要更多信息,请与我们联系。
HTML
<aside class="side-nav-track">
<ul>
<li><a class="link0 active" href="#ch0">00 _ Introduction</a></li>
<li><a class="link1" href="#ch1">01 _ E-Commerce Trends</a></li>
<li><a class="link2" href="#ch2">02 _ Millennial Purchasing</a></li>
<li><a class="link3" href="#ch3">03 _ The Vision</a></li>
</ul>
<img class="akqa-logo" src="images/logos/logo-akqa.png">
</aside>
$(document).ready(function(){ $( '主体')隐藏()淡入(1500);
// Side nav active classes
$(window).scroll(function(){
var a = $('header').height();
var b = $('#00').height();
var c = $('#01').height();
var d = $('#02').height();
var e = $('#03').height();
var y = $(window).scrollTop();
if( y > 0-100 && y < a+b-200 ){
$( ".link0").addClass( 'active' );
}
else {
$( ".link0").removeClass( 'active' );
}
if( y > a+b-200 && y < a+b+c-200 ){
$( ".link1").addClass( 'active' );
}
else {
$( ".link1").removeClass( 'active' );
}
if( y > a+b+c-200 && y < a+b+c+d-200 ){
$( ".link2").addClass( 'active' );
}
else {
$( ".link2").removeClass( 'active' );
}
if( y > a+b+c+d-200 && y < a+b+c+d+e-10 ){
$( ".link3").addClass( 'active' );
}
else {
$( ".link3").removeClass( 'active' );
}
});
// Page Scroll Transitions
$(".side-nav-track a").click(function() {
event.preventDefault();
var link = $(this).attr('href');
$('body, html').animate({
scrollTop: $(link).offset().top
}, 500);
});
$(".section-link").click(function() {
event.preventDefault();
var link = $(this).attr('href');
$('body, html').animate({
scrollTop: $(link).offset().top - 59
}, 500);
});
});
答案 0 :(得分:1)
您的链接变量是一个字符串。字符串没有偏移。仔细查看链接变量,它是元素的href属性,而不是元素。改为,
var link = $(this);
答案 1 :(得分:0)
任何时候我使用它,你必须首先收集到offset
,然后你就可以获得top
。
为什么收集href
?这不会返回任何offset
,因为它是string
$(".side-nav-track a").click(function() {
event.preventDefault();
// var link = $(this).attr('href');
var $this = $(this),
thisOffset = $this.offset(),
thisTop = thisOffset.top;
console.log(thisTop);
$('body, html').animate({
scrollTop: thisTop + 'px'
}, 500);
});
$(".section-link").click(function() {
event.preventDefault();
var link = $(this).attr('href');
$('body, html').animate({
scrollTop: $(link).offset().top - 59
}, 500);
});
这也是第一个示例在文档http://api.jquery.com/offset/
中的工作原理答案 2 :(得分:0)
我发现这个区域开始工作,还有另一个区域我错误地定义了“这个”。上面提到的问题绝不相关。