2010-11-06 40 views
1

基本上我有一个jQuery函数,用于检查用户是否接近页面底部并加载更多内容。当文件加载时,这是运行,检查。重新检查jQuery中的东西?

<script type="text/javascript"> 
$(document).ready(function() { 

    var number = 5; 
    offset = 0; 

    $(window).scroll(function() { 
     if($(window).scrollTop() + $(window).height() > $(document).height() - 10) { 

      $(".empty-div").append().load('<?php bloginfo('template_url'); ?>/ajax.php?offset='+offset+number, function() { 

        var offset = offset+number;    

        setTimeout(function(){ console.log('after', $(document).height()); }, 0); 
        setTimeout(function(){ console.log('after', $(window).height()); }, 0); 



      });  

     } 

    }); 

}); 
</script> 

H/e每当我到达页面底部的第二个页面时,它都不会重新载入函数。顺便说一下,它第一次工作。任何想法如何弥补这一点?控制台的东西在那里重新计算高度,以防万一这是造成它的原因。

+0

它被称为无限滚动不是吗? – jcolebrand 2010-11-06 23:44:42

回答

1
  1. 你在$(“。empty-div”)上使用load(),这不会增加更多内容,它会替换内容(如果响应不会改变,你将看不到变化)

    更好应该是这样的

    $('<div/>').appendTo(".empty-div").load(/*****/) 
    
  2. 也许还存在与DOCTYPE一个问题。日志

    $(window).scrollTop(), $(window).height() and $(document).height() 
    

    也许,它不同于标准 - 和怪癖模式。

+0

我会给你正确的答案,看你的回答让我进一步研究,并找到答案,所以以迂回的方式,你是对的;) – Johnny 2010-11-07 00:17:38

3

通过这样做:

var offset = offset+number; 

你正在创建一个新当地变量offset,不更新您的原

offset = 0; 

函数之前声明的,所以这样的:?offset='+offset+number总是使用offset作为0,因为它从未更新过。只是删除了var,就像这样:

offset = offset+number; 

清洁度,还添加了var到原来的声明,或使用逗号的多个声明,如下所示:

var number = 5, offset = 0; 
+0

或偏移+ =数字:) – 2010-11-06 21:42:53

+0

@Amir - 是的,绝对......我把它保持不变以更好地说明它为什么不*工作:) – 2010-11-06 21:44:10

+0

虽然这是一个问题,但主要问题是加载函数第二次滚动到底部时不再运行。添加更多内容会增加到底部的距离,并且当我滚过临界点时,什么都不会发生。有任何想法吗? :( – Johnny 2010-11-06 22:43:41