javascript - 如何让无限滚动工作?

标签 javascript jquery infinite-scroll

我正在尝试让这个无限加载脚本在我的项目中工作。

这是我的 HTML:

<!-- Contents -->
<div id="page-container">
  <div id="scroller">
    <div id="page_1" class="pagina"></div>
    <div id="page_2" class="pagina"></div>
    <div id="page_3" class="pagina"></div>
    <div id="page_4" class="pagina"></div>
    <div id="page_5" class="pagina"></div>
    <div id="page_6" class="pagina"></div>
  </div>
</div>

<div id="pages-to-load">
  <div id="page_7" class="pagina"></div>
  ...
  <div id="page_25" class="pagina"></div>
</div>

这是脚本:

function scrollalert(){
  var pages = document.getElementById("scroller").getElementsByTagName("div");
  var currentPageId = pages[pages.length - 1];
  //console.log("currentPageId is: "+currentPageId);
  var scrollbox = document.querySelector('#page-container');
  var scrolltop = $(window).scrollTop();
  var scrollheight = scrollbox.scrollHeight;
  var windowheight = $(window).height();
  var scrolloffset=20;
  console.log(scrolltop);
  console.log(scrollheight);
  console.log(windowheight);
  console.log(scrollheight-(windowheight+scrolloffset));
  if(scrolltop>=(scrollheight-(windowheight+scrolloffset))) {
    //fetch new items
    console.log("loading more pages");

    (function() {
      alert('test');
      var i;
      var pagesToLoad = $("#pages-to-load > div").size();
      for (i = 0; i < pagesToLoad; i++) {
        console.log(pagesToLoad[i].id);
        $.get(pagesToLoad[i].id, function(newitems){
          alert('get new page');
          $('#scroller').append(newitems);
          updatestatus();
        })
      };
    })();
  };
}

无论我尝试什么,我似乎都无法加载和附加我的​​新页面。此外,向下滚动时,我的 scrollTop 和 scrollHeight 不会改变。我确定我在这里遗漏了一些明显的东西。我的要加载的页面也未定义?

最佳答案

这是我的一个使用 JQuery 的无限滚动脚本:

HTML:

<html>
    <head>
    <title>Scroll Troll Page</title>
    <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
</head>
<body>
    <div id="scrollbox">
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
    </div>
</body>

<script type="text/javascript">
    $(window).scroll(function () {
        //- 10 = desired pixel distance from the bottom of the page while scrolling)
        if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
        var box = $("#scrollbox");
    //Just append some content here
    box.html(box.html() + "<br /><br /><br /><br /><br /><br /><br />");
        }
});
</script>

在线:

box.html(box.html + "Place content to expand here");

您可以添加滚动到页面底部时应添加到容器中的内容。

工作 jsFiddle:

http://jsfiddle.net/MdrJ4/3/

关于javascript - 如何让无限滚动工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20972026/

相关文章:

javascript - 重叠下拉

javascript - 如何使 ReactJS 中的 onChange 文本响应

javascript - imacros 循环不工作

javascript - CSS 旋转变换不停留在新位置

jquery - 为什么我的 ajax 函数不能无限滚动?

javascript - 水平 AJAX 发布加载程序,检测滚动条何时到达末尾

javascript - iOS websql 限制

jquery - 当我触发事件时,如何将参数传递给事件处理程序?

JavaScript 清理内存

jquery - 使用带有 Masonry 回调的无限滚动时出现问题