jQuery plugin to display very long tables in a browser with an MVC twist.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



jQuery plugin to display very long tables in a browser with an MVC twist.

The plugin inserts only visible rows in the DOM, in a similar fashion to iOS. It uses 2 spacers that are inserted at the beginning and end of the table to maintain its global size even though most of the rows are missing. It does not use absolute positioning to avoid visual glitches.

The model can be updated, sorted and filtered dynamically.


To activate the plugin, you need to pass several options:

  cellHeight: 50,
  model: getModel(),
  render: renderRow, // optional
  container: "#parent" // optional

model is either an array of object or a function that returns one:

var model = [
    id: 1,
    name: 'Albert Einstein',
    birth: '1879-03-14'
    id: 2,
    name: 'Isaac Newton',
    birth: '1643-01-04'
    id: 3,
    name: 'Johannes Kepler',
    birth: '1571-12-27'

You can optionally provide a custom render function, which generates a DOM node with the model. For example:

function renderRow(data) {
  return $('<tr>')

You can also optionally provide a container element (or selector) in case the scrolled list does not fill the window, but rather some e.g. absolutely positioned div.

You can sort the table at any time:

$('#list').infiniTable('sort', {
  column: $(this).html().toLowerCase(),
  ascending: true

You can also show only rows that match a predicate:

$('#list').infiniTable('filter', 'string', this.value);