我有以下代码:
$('body').scrollspy({
target: '.sidebar > .nav > .active',
offset: 120
});
/* animate scrolling to the sidebar sublink targets to ensure proper offsets */
$('.sidebar > .nav > .active > .nav > li > a').on('click', function () {
var target = $($(this).attr('href'));
$('html, body').animate({
scrollTop: target.offset().top
}, 200);
});
我收到以下错误
未捕获的TypeError:无法读取未定义的属性“top”
在HTMLAnchorElement。 (?site.js V = 6-PQc6gnbrcv8oGPmVGKbiMSOAf5yrI5zG6Eeo7i360:81)
在HTMLAnchorElement.dispatch(jquery-2.2.0.min.js:3)
在HTMLAnchorElement.r.handle(jquery-2.2.0.min.js:3)
答案 0 :(得分:0)
我的猜测是你没有选择你想要的东西。也许a
不是目标。也许你没有选择等于href的部分。也许href不是你的想法。也许偏移是未定义的,因为jQuery无法计算它。
$('body').scrollspy({
target: '.sidebar > .nav > .active',
offset: 120
);
$('.sidebar > .nav > .active > .nav > li > a').on('click', function () {
var href = $(this).attr('href') || $('a', this).attr('href'),
target = $(href);
console.log('Href:', href);
console.log('Target:', target);
console.log('Offset:', target.offset());
target.length && target.offset() && $('html, body').animate({
scrollTop: target.offset().top
}, 200);
});
因为他们说:
注意:jQuery不支持获取隐藏元素的偏移坐标>或计算文件元素上设定的边距。
虽然可以获得具有可见性的元素的坐标:隐藏> set,display:none从渲染树中排除,因此具有位置> >这是未定义的。