2015-04-06 38 views
0

我正在使用Wordpress的無限滾動插件在用戶滾動到底部時在頁面上加載新帖子。問題是這已經加載重複的帖子,因爲排序變化非常快(由於受歡迎程度)並且帖子最終在不同的頁面上。無限滾動運行後無法調用函數

當插件抓取下一頁時,有時產品原本在FIRST頁面上已經排序到SECOND頁面。所以我最終得到了重複。

我打算等待腳本加載下一頁內容,然後遍歷所有帖子標題並找到重複項。然後,我會刪除每個帖子的第二個實例。

我注意到Infinite Scroll在標籤爲「內容加載/回調後運行」的設置中有一個窗口,所以我想我可以在該字段中輸入一個函數來調用。

removeDuplicates();

然後我進入頁腳是這樣的:

function removeDuplicates(){ 
 
    var titleList = []; 
 
    $('.title').each(function(i, obj) { 
 

 
     /* The titles are in <h1> tags, I cycle through them, 
 
    if it's the first time seeing the title I add it to titleList. 
 
    If it's already in the array I hide the parent. */ 
 
     
 
    }); 
 
});

我不斷收到 「未定義功能」 有關。每個和這似乎與範圍有關,但我不確定發生了什麼寧。

是否有更簡單的方法來觸發刪除重複的功能?我至少在正確的軌道上?

感謝您提供的任何見解!

回答

0

好像jquery沒有加載。即使您使用不返回元素的選擇器,它仍應具有.each()方法。

嘗試使用vanillaJS而不是jquery。

var titleNodeList = document.querySelectorAll('.title'); // get elements 
var titleElArray = Array.prototype.slice(titleNodeList); // convert to array 
titleElArray.forEach(function(el){...}); // iterate 
+0

感謝您的回覆。我嘗試了這個,但它仍然不能工作。我在代碼中看到了這個註釋,指的是回調框:「之前,我們將傳入新的DOM元素作爲回調的上下文,但是我們現在使用的是一個沒有父母或孩子的documentfragment,所以context是contentContainer,我們傳入一個元素數組作爲第一個參數 – MostXlent1

+0

如果元素不在文檔中,選擇器將不起作用,而不是'document.querySelectorAll()',你需要調用'theDocumentFragment.querySelectorAll()'。 –

+0

你的原始答案實際上最終做了很多事情,我不得不使用titleNodeList.length,然後對titleNodeList [x] .innerHTML運行一個for循環。您! – MostXlent1