AJAX-enabled Infinite Scroll With Template

File Size: 8.19 KB
Views Total: 2693
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   
AJAX-enabled Infinite Scroll With Template

infiniteScrollWithTemplate.js is a lightweight and easy-to-use jQuery plugin to implement AJAX-enabled Infinite Scrolling in your web app.

The plugin fetches data using AJAX requests and loads more content in your document on page scroll or you click a custom trigger element like Load More button.

Works on both desktop and mobile. Based on the jsrender JavaScript templating engine.

See Also:

How to use it:

1. Load the needed jQuery and jsrender JavaScript libraries in the document.

<script src="/path/to/cdn/jquery.min.js"></script>
<script src="/path/to/cdn/jsrender.min.js"></script>

2. Load the Load InfiniteScrollWithTemplate plugin.

<script src="jquery.infiniteScrollWithTemplate.js"></script>

3. Create a custom template for data rendering.

<script id="my-tmpl" type="text/x-jsrender">
  <p>{{:id}}. {{:title}}</p>
</script>

4. Create a container to which the new content is appended on page scroll.

<div id="result"></div>

5. Initialize the plugin and determine the data source.

$("#result").infiniteTemplate({
  templateSelector: "#my-tmpl",
  dataPath: "data_sources.ajax",
  query: "word=ajax",
});

6. The data should return AJAX response as follows.

{
  "data": [
      {
        "id": 1,
        "title": "Title 1"
      },
      {
        "id": 2,
        "title": "Title 2"
      },
      {
        "id": 3,
        "title": "Title 3"
      },
      // more data here
  ]
}

7. Enable a Load More button to load more content instead of Page Scroll.

<button id="loadmore">Load More</button>
$("#result").infiniteTemplate({
  templateSelector: "#my-tmpl",
  dataPath: "data_sources.ajax",
  query: "word=ajax",
  loadSelector: $('#loadmore'),
});

8. More plugin options with default values.

$("#result").infiniteTemplate({

  // POST, PUT, DELETE
  method: "GET",

  // Merge with json to load
  templateHelpers: null,

  // load on page load
  loadAtStart: true,

  // Load more data when the selector gets clicked
  loadSelector: null,

  // initial page
  initialPage: 1,

  // prevent cache
  preventCache: false,

});

9. Execute a callback function when there is no result.

$("#result").infiniteTemplate({
  templateSelector: "#my-tmpl",
  dataPath: "data_sources.ajax",
  query: "word=ajax",
  zeroCallback: function () {
    alert("zero alert");
  },
});

This awesome jQuery plugin is developed by cable8mm. For more Advanced Usages, please check the demo page or visit the official website.