jQuery scrollTo变量

时间:2016-03-16 00:25:07

标签: javascript jquery

我尝试将页面滚动到具有id的特定元素,这很有效:

var $target = $('#people');
var scrolltop = $target.offset().top  - 50;
$('html, body').animate({ scrollTop: scrolltop }, 'slow');

现在,我正在尝试使用location.hash从网址获取$ target,但由于某种原因,它无法正常工作。 这是我的代码:

var $target = $(location.hash);
var scrolltop = $target.offset().top  - 50;
$('html, body').animate({ scrollTop: scrolltop }, 'slow');

如果我检查$ target值是否正确,但是我收到此错误: Cannot read property 'top' of undefined

知道为什么吗?

2 个答案:

答案 0 :(得分:0)

我在另一段脚本中遇到了一个错误,它破坏了正常运行的代码。

无论如何,如果有人需要类似的话,我会发布解决方案。

if (location.hash) {

  // take the hash from the url
  var sectionUrl = location.hash;


  // disable anchor “jump” when loading a page
  setTimeout(function() {
    window.scrollTo(0, 0);
  }, 1);


  // "jump" to the div with the location hash 
  setTimeout(function(){
     $('html, body').stop().animate({
          scrollTop: $(sectionUrl).offset().top - 50
      }, 2000);   

  }, 1000)

}

答案 1 :(得分:0)

只需删除“-”和“ 50”之间的空格

将其设置为“ -50”

致力于挖掘,希望您也是如此。