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;
});
我想过把一个简单的二进制信号来检查,如果一个$。员额仍在进行中,但我不知道,如果是不好的做法。什么是最好的方法来做到这一点?