当用户滚动到页面底部时,我正在使用jQuery load()来加载更多内容。这是我的剧本。
$(window).scroll(function () {
if ($(window).scrollTop() >= $(document).height() - $(window).height()) {
var visible_posts = $('.post').length - 1;
$(".posts").append('<div class="more-content-'+ visible_posts + '"></div>');
$(".more-content-" + visible_posts).html('<div class="loading"><img src="/img/loading.gif" alt="" />');
$(".more-content-" + visible_posts).load('<?php bloginfo('template_directory'); ?>/ajax/get_posts.php?offset=' + visible_posts);
}
});
问题是这会产生奇怪的行为和许多加载GIF,如果用户的滚动太快了......我认为因为它会在每次加载div时附加div,即使在加载完成之前也满足条件。
问题是:
有没有办法在第一次执行后停止脚本..运行load()...然后重新启用该功能?当您想要禁用太快的点击时,类似于解除绑定的内容。
有什么想法吗?
答案 0 :(得分:2)
如何在加载完成后重新启用该功能?
var canLoad = true;
$(window).scroll(function () {
if ($(window).scrollTop() >= $(document).height() - $(window).height() && canLoad) {
canLoad = false;
// other stuff
$(".more-content").load('stuff', function() {
// re-enable scroll function
canLoad = true;
});
}
});
答案 1 :(得分:0)
一旦开始加载新页面就设置一个标志,并在页面更新后取消设置。
var loadingMore = false;
$(window).scroll(function () {
if ( !loadingMore &&
$(window).scrollTop() >= $(document).height() - $(window).height()) {
loadingMore = true;
var visible_posts = $('.post').length - 1;
$(".posts").append('<div class="more-content-'+ visible_posts + '"></div>');
$(".more-content-" + visible_posts).html('<div class="loading"><img src="/img/loading.gif" alt="" />');
$(".more-content-" + visible_posts)
.load('<?php bloginfo('template_directory'); ?>/ajax/get_posts.php?offset=' + visible_posts,
function(){loadingMore = false;}
);
}
});
重要的是要注意,它不仅仅是多次出现的div,而是实际上是在发出多个AJAX请求。
答案 2 :(得分:0)
试试这个
var flag = true;
$(window).scroll(function () {
if ($(window).scrollTop() >= $(document).height() - $(window).height()) {
if(flag){
flag = false;
var visible_posts = $('.post').length - 1;
$(".posts").append('<div class="more-content-'+ visible_posts + '"></div>');
$(".more-content-" + visible_posts).html('<div class="loading"><img src="/img/loading.gif" alt="" />');
$(".more-content-" + visible_posts).load('<?php bloginfo('template_directory'); ?>/ajax/get_posts.php?offset=' + visible_posts, function(){
flag = true
});
}
}
});
答案 3 :(得分:-1)
这应该有用,我还添加了评论来帮助你:
$(window).scroll(function () {
var bload = 1; // Add a boolean var
if ($(window).scrollTop() >= $(document).height() - $(window).height() && bload) {
// Check in the condition to see if we load
bload = 0; // Set the boolean to false or zero, so that we don't load anything else until the var is true again
var visible_posts = $('.post').length - 1;
$(".posts").append('<div class="more-content-'+ visible_posts + '"></div>');
$(".more-content-" + visible_posts).html('<div class="loading"><img src="/img/loading.gif" alt="" />');
$(".more-content-" + visible_posts).load('<?php bloginfo('template_directory'); ?>/ajax/get_posts.php?offset=' + visible_posts, function () {
bload = 1; // This gets fired when the load is done, so we can load again (we set the bool to true)
});
}
});