Javascript 使用jQuery平滑地从一个页面滚动到另一个页面?

Javascript 使用jQuery平滑地从一个页面滚动到另一个页面?,javascript,jquery,jquery-plugins,smooth-scrolling,Javascript,Jquery,Jquery Plugins,Smooth Scrolling,我目前正在使用jQuery Smooth Scroll在我的一个页面(第1页)上平滑地上下滚动到各种锚定位置。但是,我也希望能够从另一个页面(第2页)链接到第1页(将#书签添加到url),让jQuery Smooth Scroll了解我使用#书签调用页面的事实,并在页面完成加载后让它平滑地向下滚动到相关位置。我不知道这是否有可能 这是我正在使用的Smooth Scroll版本: 我对jQuery还比较陌生,所以我可能忽略了一些显而易见的东西。有可能,您希望在页面加载完成后调用smooth sc

我目前正在使用jQuery Smooth Scroll在我的一个页面(第1页)上平滑地上下滚动到各种锚定位置。但是,我也希望能够从另一个页面(第2页)链接到第1页(将#书签添加到url),让jQuery Smooth Scroll了解我使用#书签调用页面的事实,并在页面完成加载后让它平滑地向下滚动到相关位置。我不知道这是否有可能

这是我正在使用的Smooth Scroll版本:


我对jQuery还比较陌生,所以我可能忽略了一些显而易见的东西。

有可能,您希望在页面加载完成后调用smooth scroll函数。在jQuery中,它使用$(document).ready(函数(){your code})


您需要输入一些内容来解析url,以提取书签,然后调用平滑滚动。Ajma的回答应该足够了,但为了完整性:

alert(location.hash)
编辑:一个更完整的示例:

// on document.ready {
if (location.hash != '') {
    var a = $("a[name=" + location.hash.substring(1) + "]");
    // note that according to w3c specs, the url hash can also refer to the id
    // of an element. if so, the above statement becomes
    // var a = $(location.hash);
    if (a.length) {
        $('html,body').animate({
            scrollTop: $(a).offset().top
        }, 'slow');
    }
}
// }

太好了,谢谢。我想您不知道如何使用javascript来实现这一点,是吗(我的意思是,从url中提取#书签)?谢谢您提供了有关这方面的更多信息。我看到了一个问题,尽管在URL中有一个哈希的简单存在似乎使它直接跳到页面上的书签,而不是让jquery使用平滑滚动来处理它。我想知道我是否需要使用类似于?bookmark的东西,而不是在url中使用#bookmark从第2页链接到第1页,然后查找?而不是散列,然后平滑滚动到它在?它的位置之后找到的书签。在?之后搜索内容?我发现了问题。您可以使用文档中实际上不存在的伪哈希(#detail foo),然后让jQuery滚动到
div[id=detail]
a[name=detail]
,但这并不优雅。它实际上值得作为一个单独的问题发布。非常好的建议,萨尔曼,谢谢,是的,我想我会把它作为一个新问题发布,以防有更优雅的解决方案。谢谢。我们还应该注意,使用“html,body”作为选择器是因为一些浏览器需要html标记来设置滚动动画,而其他浏览器需要body标记来滚动。jQuery将同时选择两者并尝试在两者上设置滚动动画。这不是问题,预期效果仍然相同。但是,如果在动画完成后添加要执行的完整函数,则该逻辑将执行两次(!)。通过设置局部布尔变量检查,在完整函数逻辑开始时提前退出,来应对这种情况。