2017-12-20 14 views
1

は、私は私がしかし、2を毎回追加されるstart変数のコンソールログに追加ページを一番下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); 
    } 
}); 

の近くにスクロールされた関数を実行し、次のjQueryコードを持っていますページの下部にスクロールして、常に2を追加して機能を実行し、停止しません。

ページが再びスクロールされるまで、既に実行されているときに実行を停止するにはどうすればよいですか?

UPDATE - 追加機能:

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); 
     } 
    }); 
} 
+0

get_ticket_updatesとは何ですか?無限スクロールの結果をさらに読み込む非同期メソッドですか? – Taplar

+0

あなたはおそらく[デバウンス機能](https://davidwalsh.name/javascript-debounce-function)を見る必要があります。そうしないと、実際には 'scroll ' –

+0

私のアップデートを参照してください。 – charlie

答えて

0

しようとすると、特定のスクロール高さ外あなたが

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; 
 
    } 
 
    } 
 
});
.box { 
 
    height: 400vh; 
 
}
<div class='box'></div>
を機能を実行したり、必要がない場合、あなたが知っているので、リセット取得フラグを追加

+0

これを試しましたが、今は機能を実行していないようです。 – charlie

+0

コメントを外しましたか? –

関連する問題