2010-11-06 66 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