我试图为锚链接上的滚动设置动画并收到错误:
无法阅读财产' top'未定义的
这是js:
$('a').click(function(){
$('html, body').animate({
scrollTop: $('[name="' + $.attr(this, 'href').substr(1) + '"]').offset().top
}, 1000);
return false;
});
这是html:
<li><a href="index.html#r">My anchor link</a></li>
答案 0 :(得分:1)
offset
方法为空集合返回undefined
值。看来你的选择器没有选择任何元素。在阅读length
属性之前,您可以检查集合的offset
或top
的返回值。
如果您想获得锚点的hash
,则可以使用hash
属性this.hash
,其中this
指的是{{1}元素。
答案 1 :(得分:1)
这是错误的: $。attr(this,&#39; href&#39;)。substr(1),使用此获取href attrib:
$(本).attr(&#39; HREF&#39);
这是你的工作代码。首先我提取锚名称,然后使用它:
$('a').click(function(){
var href = $(this).attr('href');
var name = href.substr(href.lastIndexOf('#')+1);
$('html, body').animate({
scrollTop: $('[name="' + name + '"]').offset().top
}, 1000);
return false;
});