使用/ JQuery在加载时滚动到新页面上的片段标识符?

时间:2011-03-03 09:32:12

标签: jquery scroll identifier scrollto

我正在尝试查看是否可以使用这样的简单HTML标记:

<a href="www.mysite.com/pageXXX#location1"></a>
<a href="www.mysite.com/page1#location1"></a>
<a href="www.mysite.com/page2#location1"></a>
<a href="www.mysite.com/page3#location1"></a>

...然后,当 new 页面加载某种简单的JQuery脚本时,让它向下滚动到ID #location1?或者,如果这是使用scrollTo插件可以实现的,那我该怎么做呢?

问题是pageXXX上存在链接,要滚动到的ID在所有页面上,即。 pageXXX,page1,page2,page3等......理想情况下,如果还有一种方法可以从URL中删除哈希标记和标识符,那也很棒,但此刻只需将它平滑地向下滚动到新页面上的ID就可以了。

2 个答案:

答案 0 :(得分:7)

你可以添加一个setTimeout,等待一点然后向下滚动吗?

function goToByScroll(id){
        $('html,body').animate({scrollTop: $("#"+id).offset().top},'slow');
}
var hash = window.location.hash;

setTimeout(function(){
      goToByScroll(hash);
},2000);

答案 1 :(得分:0)

替代方案:

而不是

<a href="www.mysite.com/pageXXX#location1"></a>

尝试

<a href="www.mysite.com/pageXXX?location1"></a>

您可以通过这种方式获取链接:

var nothash = window.location.search;
var hash = nothash.substring(1);

参考:https://developer.mozilla.org/en/DOM/window.location

在这里,您可以防止页面在任何地方乱码,您可以执行后续步骤(将哈希放在动画滚动功能中),而不必担心,如果它的触发速度足够快。