Javascript 如何将存储字符串ID的变量设置为jQuery元素,以便可以使用.offset()函数?
我有一段代码,在一个锚链接上,点击应该从URL中获取散列,然后滚动到锚定点(存在一个元素,其ID为该散列),具有固定头的某个偏移量大小Javascript 如何将存储字符串ID的变量设置为jQuery元素,以便可以使用.offset()函数?,javascript,jquery,Javascript,Jquery,我有一段代码,在一个锚链接上,点击应该从URL中获取散列,然后滚动到锚定点(存在一个元素,其ID为该散列),具有固定头的某个偏移量大小 anchorLink似乎未定义为.offset()。top返回“无法读取未定义的属性” anchorLink的输出是#my anchor,这是正确的-因此可能它不是jQuery对象,因此无法获取偏移量和顶部 $(window).on('hashchange', function(e) { console.log(location.hash);
anchorLink
似乎未定义为.offset()。top返回“无法读取未定义的属性”
anchorLink
的输出是#my anchor
,这是正确的-因此可能它不是jQuery对象,因此无法获取偏移量和顶部
$(window).on('hashchange', function(e) {
console.log(location.hash);
var anchorLink = $( location.hash.replace(/^#/, '') );
var offsetSize = $(".site-header").innerHeight();
$("html, body").animate({scrollTop: anchorLink.offset().top - offsetSize }, 500);
});
测试起来很容易:
console.log(anchorLink.length)
location.hash.replace(/^#/,'')
将不等于#我的锚
-它可能是我的锚
,但您正在明确删除前导的#
-除非您的url有#####我的锚
,否则您需要使用var=(#”+location.hash…
Gotcha!我可以发誓它一开始就有hash!谢谢