2017-08-01 34 views
-3

我是新來的,請耐心等待。我正在使用jQuery無限滾動來滾動時加載內容。雖然這個工作很好,但這個內容會隨着使用ajax的用戶輸入而改變。我想要做的是重新加載/刷新Ajax內容負載上的無限滾動代碼。如何使用jQuery重新加載腳本

這是無限滾動碼

插件:https://infinite-scroll.com/

$('#content').infiniteScroll({ 
    // options 
    path: '#page-nav a', 
    append: '.post', 
    history: false, 
    status: '.page-load-status', 
}); 

這是我的Ajax代碼重新加載內容。

$("#searchContent :input").change(function() { 
    var formData = { 
     'title' : $('input[name=title]:checked').val(), 
     'tags' : $('input[name=tags]').val() 
    }; 
    $.ajax({ 
     type: "POST", 
     url: "get_content.php", 
     data: formData, 
     cache: false, 
     dataType:'json', 
     success: function(json) { 
     $("#content").html(json.content); 
     } 
    }); 
}); 

我想要做的就是在執行ajax post函數時重新載入無限滾動代碼。任何人都可以指出如何實現這一目標?感謝你的時間。

+0

在更改'success'中的內容後再次調用插件 – charlietfl

+0

@charlietfl不會與已加載的代碼發生衝突嗎? – Melanie

+0

仔細看看文檔,它實際上並不需要你包含你自己的ajax函數,並且調用jQuery的html()函數意味着你將不會使用無限滾動,而只是替換你看到的頁面,所以我會避免那。如果在我今晚回家之前沒有人回覆,我會列出一個適當的例子。 – Kodaloid

回答

1

您需要爲新的DOM重新啓動插件:

$("#searchContent :input").change(function() { 
    var formData = { 
    'title': $('input[name=title]:checked').val(), 
    'tags': $('input[name=tags]').val() 
    }; 
    $.ajax({ 
    type: "POST", 
    url: "get_content.php", 
    data: formData, 
    cache: false, 
    dataType: 'json', 
    success: function(json) { 
     $("#content") 
     .html(json.content) 
     .infiniteScroll({ 
     // options 
      path: '#page-nav a', 
      append: '.post', 
      history: false, 
      status: '.page-load-status', 
     }); 
    } 
    }); 
}); 

旁註

通常無限滾動意味着自動頁面沒有點擊分頁。但是,您只是刪除舊內容並添加新內容,而不是附加到現有元素。你究竟想要做什麼?

嘗試$('form').serialize(),而不是var formData = {}

正在直接從JSON響應添加元素。也許嘗試一些你剛剛替換值的模板?

+0

我得到一個錯誤'TypeError:o._init不是一個函數' – Melanie