19

老实说,我在这里超出了我的深度。我创建了一个分页系统,您单击一个链接它会重新加载页面,并且一定数量的列表项显示在无序列表中。当您再次单击它时,它将重新加载页面并显示更多项目。想想 Twitter 如何在您的提要中显示推文。

问题是当它重新加载页面时它停留在顶部。我想要的是它跳到它以前拥有的页面上的相同位置。

我已经为链接设置了一个选择器,我只是不知道如何获取当前滚动位置,然后将其传递给新页面以供其跳转。

到目前为止,这是我的代码:

jQuery(document).ready(function(){
    $("a[rel=more]").live("click", function(){
        //script...
    });
});

我从这里去哪里?

4

4 回答 4

30
  1. 使用 AJAX 重新加载项目,而不是重新加载整个页面。

  2. window.pageYOffset使用和获取和设置滚动位置window.scrollTo(0, y)

    我会将位置存储在 URL 的哈希中:

    // after loading the document, scroll to the right position
    // maybe location.hash has to be converted to a number first
    $(document).ready(function() {
        window.scrollTo(0, location.hash);
    });
    
    // I'm not quite sure if reload() does preserve the hash tag.
    location.hash = window.pageYOffset;
    location.reload();
    
于 2009-06-20T22:23:11.123 回答
2

正如 gs 所说,通过 ajax 调用添加元素,而不是重新加载页面。

如果您不想使用jQuery.ScrollTo插件。它支持您梦寐以求的与滚动相关的所有内容

于 2009-06-20T22:29:32.357 回答
2

我认为您需要的只是在链接末尾传递一个 HTML 锚。浏览器将自动滚动到匹配锚点旁边的元素。例子:

<a href="page2.html#myanchor">Next page</a>

在 page2 中间的某个时间点:

<a name="myanchor">My item N</a>
于 2012-10-12T04:45:58.057 回答
1

根据@Shawn Grigson 的链接,并非所有浏览器都支持 pageYOffset。

用于获取和设置元素垂直滚动的 jQuery 解决方案(希望真正跨浏览器兼容,尽管我还没有测试过)是scrollTop()

于 2011-06-16T06:54:14.980 回答