2010-06-10 34 views
-1

我正在做一個類似於谷歌閱讀器的項目。使用無限滾動jQuery插件與AJAX

我正在使用無限滾動jQuery插件,其工作方式與查看默認選定類別(在可滾動div中)的內容時完全一樣。

然而,當選擇另一個類別(或谷歌閱讀器的情況下的文件夾),並將該類別的內容與ajax一起裝入與上述相同的div容器(基本上與Google Reader完全相同)並滾動到第2頁時,問題出現了,因爲它將移動到先前選擇的任何頁面+1,而不是從選擇新類別時的開始處開始。

我想基本上我需要一種方式來重置插件時,選擇一個新的類別。任何幫助不勝感激。

+3

我討厭這些類型的問題,「嘿,看,我剛安裝的插件不起作用,我該怎麼辦?」。 – 2010-06-11 11:08:32

+1

我非常抱歉,盧卡。但是,爲什麼你不把自己的挫折放在更合適的地方? (現在,我要Meta來要求減少評論的方法。) – 2010-06-11 11:25:05

回答

1

我意識到這是一個非常普遍的問題。我希望找到一些做過類似事情的人。

無論如何,這可能不是最佳的,但我解決這個問題。

我加入此功能的插件,可以從出側被稱爲插件:

this.resetPlugin = function() { 
    $(document).unbind('retrieve.infscr',kickOffAjax); 
    props.currPage = 1; 
}; 

予加載插件這樣

window.infinitescroll = $('#content').infinitescroll({usual settings}); 

比我可以重置當另一個類別是已選擇:

window.infinitescroll.resetPlugin(); 
1

您的回答對我無效。以下是我所做的:

您必須爲InfiniteScroll的重新設置設置兩個變量才能工作。你也必須重新綁定它。下面是代碼:

$('#myContainer').infinitescroll('destroy'); // Destroy 

// Undestroy 
$('#myContainer').infinitescroll({      
    state: {            
     isDestroyed: false, 
     isDone: false       
} 
}); 

InitInfiniteScroll(); // This is a wrapper for the standard initialization you need 

// Re-initialize 
$('#myContainer').infinitescroll('bind'); 
+0

嗨@Charles_at_Hactus我有一個類似的問題,無限滾動不適用於ajax加載的內容。你知道這些片段是否仍然有效嗎?我嘗試過,但他們沒有。如果你可以看看我的問題http://stackoverflow.com/questions/21564561/infinite-scroll-on-to-ajax-loaded-content 謝謝! – Jaypee 2014-02-04 22:29:50

0

只是想,如果有人面臨着類似的問題,我的回答作出貢獻。

var off = 0; 
var infinite = {}; 


function loadMorePosts(cat, offset){ 
      //FUNKY AJAX LOAD 
} 


function initInfinite(){ 
    infinite = new Waypoint.Infinite({ 
     element: $('.infinite-container')[0], 
     onBeforePageLoad: function() { 
     console.log(off); 
     var cat = $('.f-categories').val(); 
     loadMorePosts(cat, off); 
     off += 5; 
     }, 
     onAfterPageLoad: function(){ 
     //console.log($.noop); 
     } 
    }); 
} 
initInfinite(); 

$(function() { 
    $('.f-categories').change(function(){ 
     var cat = $(this).val(); 
     off = 0; 
     infinite.destroy(); 
     $('.grid').html(''); 
     initInfinite(); 
     loadMorePosts(cat,off); 
    }); 
});