JQuery窗口滚动

时间:2017-12-20 17:39:18

标签: javascript jquery

我有以下JQuery代码,当页面在底部滚动

时运行一个函数
var start = 2;
var limit = 2;
$(window).scroll(function() {
    if($(window).scrollTop() + $(window).height() > $(document).height() - 100) { 
    console.log(start);
    //f($(window).scrollTop() == $(document).height() - $(window).height()) {
        get_ticket_updates(start, limit);

        start = (start + 2);
    }
});

我在控制台日志中添加了start变量,每次添加2,但是当滚动到页面底部时,它会不断添加2并运行该功能而不会停止。

如果在页面再次滚动之前已经运行它,如何停止运行?

更新 - 添加了功能:

function get_ticket_updates(start, limit) {
    $("#ticket_updates_loading").show();

    var seq = '<?php echo $_GET["seq"]; ?>';
    $.ajax({
        type: "GET",
        url: "/section/tickets/view-ticket?action=get_updates&seq=" + seq + "&start=" + start + "&limit=" + limit,
        cache: false,
        success: function(data) {
            $("#ticket_updates_loading").hide();
            $("#ticket_updates_area").append(data);
        }
    });
}

1 个答案:

答案 0 :(得分:1)

尝试添加一个在特定滚动高度之外重置的标志,因此您知道是否应该运行该功能

&#13;
&#13;
var start = 2;
var limit = 2;
var hasRan = false;
$(window).scroll(function() {
  console.log(hasRan +"  :  "+ start);

  if($(window).scrollTop() + $(window).height() < $(document).height() - 100) { 
    // reset flag when no longer at bottom of page
    hasRan = false;
  } else {
    if (hasRan == false) {
      get_ticket_updates(start, limit);
      start = (start + 2);
      // function has ran, trigger flag
      hasRan = true;
    }
  }
});
&#13;
.box {
  height: 400vh;
}
&#13;
<div class='box'></div>
&#13;
&#13;
&#13;