0
我做jQuery的無限滾動的腳本,看起來像這樣:停止滾動綁定功能,直到AJAX請求succeded
$(window).scroll(function(){
if($(window).scrollTop() >= $(document).height() - $(window).height() - 50){
// If we have not loaded all pages yet
if($('#feed').data('pagesloaded') != 0){
var toload = $('#feed').data('pagesloaded') + 1;
$.post("/feed/" + toload, { 'ignore': showed_posts_id }, function(html){
if(html){
$('#feed')
.data('pagesloaded', toload)
.append(html);
}else{
// If all pages are loaded, disable infinite scrolling
$('#feed').data('pagesloaded', 0);
}
});
}
}
});
其中50
是像素從該事件是底部偏移觸發。但是,當滾動到頁面底部時,該函數會在偏移量從50到0時被觸發很多次,這會導致所有頁面一次加載。我聽說過將綁定事件綁定到$(window).ajaxStart()和.ajaxStop()的技術,但是由於很多異步ajax正在我的應用程序中進行,它會干擾無限滾動。這就是我說的:
var ajaxRunning = false;
$(window).ajaxStart(function() {
ajaxRunning = true;
}).ajaxStop(function() {
ajaxRunning = false;
});
我想過把一個簡單的二進制信號來檢查,如果一個$。員額仍在進行中,但我不知道,如果是不好的做法。什麼是最好的方法來做到這一點?