我正在尝试在我的网站上实现此功能,因此导航样式会随着您滚动到相应部分而发生变化。
http://stanhub.com/sticky-header-change-navigation-active-class-on-page-scroll-with-jquery/
我可以看到的唯一区别是,我创建的导航栏在到达页面顶部后变得发粘。
当我扔一个
console.log(refElement.position())
我明白了
Object {top: 716.984375, left: 50.5}
Object {top: 1811.796875, left: 50.5}
我收到错误
"Uncaught TypeError: Cannot read property 'top' of undefined" on from function.
在这行上:
if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
这是剧本
$(document).ready(function() {
$(document).on("scroll", onScroll);
function onScroll(event){
var scrollPos = $(document).scrollTop();
$('.cn17w1.original a').each(function () {
var currLink = $(this);
var refElement = $(currLink.attr("href"));
if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
$('.cn17w1.original ul li a').removeClass("active");
currLink.addClass("active");
}
else{
currLink.removeClass("active");
}
});
}
});
最佳答案
var refElement = $(currLink.attr("href"));
这将返回一个空的jQuery集,当对它调用position()时,它将返回未定义。 $(currLink.attr("href"))
的原因不是选择DOM元素,而是选择任意文本,特别是href
元素的currLink
属性值。