Javascript 如何使滚动条上的ajax负载达到大约90%,而不是滚动条到达底部?

Javascript 如何使滚动条上的ajax负载达到大约90%,而不是滚动条到达底部?,javascript,jquery,html,css,ajax,Javascript,Jquery,Html,Css,Ajax,这是代码示例,我知道它工作得很好,只是当滚动条到达底部时,它会加载更多的ajax请求,我想在滚动条达到90%或超过顶部时加载它 $count = sql::read("SELECT COUNT(table_column_name) as count FROM table_name WHERE Info ='".$info."'"); $actual_row_count = $count[0]->count; <script type="text/javascript">

这是代码示例,我知道它工作得很好,只是当滚动条到达底部时,它会加载更多的ajax请求,我想在滚动条达到90%或超过顶部时加载它

$count = sql::read("SELECT COUNT(table_column_name) as count FROM table_name WHERE Info ='".$info."'");
$actual_row_count = $count[0]->count;

<script type="text/javascript">
         $(document).ready(function(e) {
            var page = 1;
            var flag = 0;
            $(window).scroll(function () {
                $('#more').hide();
                $('#no-more').hide();
                if($(window).scrollTop() + $(window).height() > $(document).height() - 200) {
                    $('#more').css("top","400");
                    if(flag == 0)
                    {
                        $('#more').show();
                    }
                }
                if($(window).scrollTop() + $(window).height() == $(document).height()) {
                    $('#more').hide();
                    $('#no-more').hide();
                    page++;
                    var data = {
                        page_num: page,
                        info : '<?php echo $info; ?>'
                      };
                    var actual_count = "<?php echo $actual_row_count; ?>";
                     if((page-1)* 12 > actual_count){
                        $('#no-more').css("top","400");
                        $('#no-more').show();
                        flag = 1 ;
                    }
                    else{
                        $.ajax({
                            type: "POST",
                            url: "data.php",
                            data:data,
                            success: function(res) {
                                $("#result").append(res);
                                console.log(res);
                            }
                        });
                    }
                }
            });
        });
</script>

您需要计算当前视口的底部是否超过文档总高度的9/10。考虑下面的表达式,它可能有帮助:

($(window).scrollTop() + $(window).height()) / $(document).height() > 0.9
但是,您可能会发现,滚动事件每秒触发多个时间是导致此问题的主要原因。因此,在解决单个ajax请求之前,它会进行所有可能的调用。您需要在进行第一次调用之前取消附加事件处理程序,并在ajax成功后重新附加它

例如:

var win = $(window);
function onScroll() {
    ...
    if (90% document scrolled) {
        win.off('scroll', onScroll);
        $.ajax({
            ...
            success: function(res) {
                $("#result").append(res);
                win.on('scroll', onScroll);
            }
        });
    }
}
win.on('scroll', onScroll);

它在.9中工作,但现在正在一次性加载rest所有列表,不再具有分页效果。如果这种情况正常,为什么要加载所有数据,尽管在data.php中,我每次调用12个值,这是因为scroll事件每秒触发多次。因此,在解决单个ajax请求之前,它会进行所有可能的调用。您需要在进行第一次调用之前取消连接事件处理程序,并在ajax成功后重新连接它。我可以在控制台中使用cchk,如何处理事件处理程序,请建议?