Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将存储字符串ID的变量设置为jQuery元素,以便可以使用.offset()函数?_Javascript_Jquery - Fatal编程技术网

Javascript 如何将存储字符串ID的变量设置为jQuery元素,以便可以使用.offset()函数?

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);

我有一段代码,在一个锚链接上,点击应该从URL中获取散列,然后滚动到锚定点(存在一个元素,其ID为该散列),具有固定头的某个偏移量大小

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!谢谢