Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不向下移动内容的情况下预写div?使用iScroll_Javascript_Jquery_Lazy Loading_Iscroll4_Iscroll - Fatal编程技术网

Javascript 在不向下移动内容的情况下预写div?使用iScroll

Javascript 在不向下移动内容的情况下预写div?使用iScroll,javascript,jquery,lazy-loading,iscroll4,iscroll,Javascript,Jquery,Lazy Loading,Iscroll4,Iscroll,我有一个容器div,其中有一堆可滚动的内容(对于我正在使用iScroll的记录,如果这改变了解决方案的话)。当我滚动到顶部时,我想在当前滚动位置上方加载内容。如果我只是使用jQuery“prepend();”在div前面加上前缀,那么可滚动区域中的内容就会向下移动。理想情况下,我们希望将当前内容保留在框架中,并使可滚动区域向上扩展到内容上方 有什么想法吗 谢谢 根据,它有一个名为scrollToElement的方法: 滚动元素(el,运行时):滚动到滚动区域内的任何元素el必须是CSS3选择器。

我有一个容器div,其中有一堆可滚动的内容(对于我正在使用iScroll的记录,如果这改变了解决方案的话)。当我滚动到顶部时,我想在当前滚动位置上方加载内容。如果我只是使用jQuery“prepend();”在div前面加上前缀,那么可滚动区域中的内容就会向下移动。理想情况下,我们希望将当前内容保留在框架中,并使可滚动区域向上扩展到内容上方

有什么想法吗

谢谢

根据,它有一个名为
scrollToElement
的方法:

滚动元素(el,运行时)
:滚动到滚动区域内的任何元素<代码>el必须是CSS3选择器。例如:
scrollToElement(“#elementID”,“400ms”)

如果您总是预先准备一个固定数量的
div
s(例如总是一个
div
),我想您可以在预先准备好新内容后立即使用它滚动到(例如)第二个元素:

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

我还没有尝试过,所以请告诉我们这是否适合您。

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

  • 当前的
    x
    y
    始终可以通过
    myScroll.x
    myScroll.y
    获得
  • iScroll有一个内部函数
    \u offset(el)
    ,它返回任何给定元素的
    偏移量
这基本上打开了两个解决方案:

  • 使用偏移量(el)。虽然可能,但这是不可取的。下划线是一种将函数标记为“private”的约定,这意味着它不是官方API的一部分

  • 使用新添加元素的高度:

    var x = myScroll.x;
    var y = myScroll.y;
    
    // ... (prepend new content)
    y += $('#scroller :first-child').outerHeight();
    
    myScroll.scrollTo(x, y, '0ms');
    
    您可能需要将
    true
    传递给,这使得它包含边距


  • 再一次,我还没有测试过这个,所以请让我们知道它是否有效。

    谢谢您的回复!这种方法最终给了我们一个(非常快的)延迟时间,然后我们返回到原来的滚动位置,并看到用户可能没有与使用的元素完全对齐,我们还看到滚动位置的微小移动。