0

我有一个包含一堆可滚动内容的容器 div(作为我使用 iScroll 的记录——如果这改变了解决方案)。当我滚动到顶部时,我想加载当前滚动位置上方的内容。如果我只是使用 jQuery“prepend();”在 div 前面添加 我的可滚动区域中的内容向下移动。理想情况下,我们希望将当前内容保留在框架中,并使可滚动区域在内容上方向上增长。

有什么想法吗?

谢谢!

4

2 回答 2

1

根据iScroll 网站,它有一个方法叫做scrollToElement

scrollToElement(el, runtime):滚动到滚动区域内的任何元素。el必须是 CSS3 选择器。例如:scrollToElement("#elementID", '400ms')

如果您总是预先添加固定数量的divs (例如始终是单个div),我想您可以在添加新内容之后立即使用它滚动到(例如)第二个元素:

// ... (prepend new content)
myScroll.scrollToElement('#scroller :nth-child(2)', '0ms');

我还没有尝试过,所以如果这对你有用,请告诉我们。

于 2012-08-17T22:43:19.640 回答
0

在快速浏览 iScroll 的源代码后,我发现了以下内容:

  • 当前xy始终可通过myScroll.x和获得myScroll.y
  • iScroll 有一个内部函数_offset(el),它返回任何给定元素的偏移量left和偏移量。top

这基本上开辟了两种解决方案:

  1. 使用_offset(el). 虽然可能,但这是不可取的。下划线是标记函数“私有”的约定,除其他外,这意味着它不是官方 API 的一部分。

    或者

  2. 使用新添加元素的高度:

    var x = myScroll.x;
    var y = myScroll.y;
    
    // ... (prepend new content)
    y += $('#scroller :first-child').outerHeight();
    
    myScroll.scrollTo(x, y, '0ms');
    

    您可能需要传递true.outerHeight(),这使得它包括边距。

再一次,我还没有测试过这个,所以请告诉我们它是否有效。

于 2012-08-18T00:20:00.777 回答