Javascript 如何使滚动条上的ajax负载达到大约90%,而不是滚动条到达底部?
这是代码示例,我知道它工作得很好,只是当滚动条到达底部时,它会加载更多的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">
$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,如何处理事件处理程序,请建议?