首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在进行.ajax调用时使.scrollTop不跳动

如何在进行.ajax调用时使.scrollTop不跳动
EN

Stack Overflow用户
提问于 2012-04-07 16:49:35
回答 1查看 261关注 0票数 1

我正在做一些类似于无限画廊的事情。我的OnScroll函数检测滚动是否位于页面底部的100px处,如果是,则执行ajax调用,并将输出附加到div。

问题是closeToBottom函数太快了,所以有时它会从底部捕获100像素的滚动条两次,甚至4-5次,然后滚动条才向上滚动。

如何使closeToBottom更微妙,使我的ajax调用一次只被调用一次,并且滚动条立即向上滚动?

代码语言:javascript
复制
function onScroll(event) {
    // Check if we're within 100 pixels of the bottom edge of the browser window.
    var closeToBottom = ($(window).scrollTop() + $(window).height() > $(document).height() - 100);
    if(closeToBottom) {

        $.ajax({

                url: "<?php echo get_template_directory_uri() ?>/ajaxcall.php?offset="+offset,
                cache: false
        }).done(function( html ) {
            offset = offset + numberposts;
            $("#tiles").append(html);


        });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-07 17:02:20

您可以引入一个在ajax请求运行时设置的变量,只有在没有其他请求运行时才会启动另一个变量。如下所示:

代码语言:javascript
复制
var ajaxLoading = false;
function onScroll(event) {
    // Check if we're within 100 pixels of the bottom edge of the browser window.
    var closeToBottom = ($(window).scrollTop() + $(window).height() > $(document).height() - 100);
    if(closeToBottom && !ajaxLoading) {
        ajaxLoading = true;
        $.ajax({

                url: "<?php echo get_template_directory_uri() ?>/ajaxcall.php?offset="+offset,
                cache: false
        }).done(function( html ) {
            offset = offset + numberposts;
            $("#tiles").append(html);
            ajaxLoading = false;

        });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10053114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档