JS: Split Table
/*
=====================================================================
$ SPLIT TABLE
=====================================================================
*/
/***********************************************************
***********************************************************
Usage:
$('.split-table table').splitTable({
tableSplit: 2
});
***********************************************************
***********************************************************/
(function ($) {
$.fn.splitTable = function(options) {
// Options
var settings = $.extend({
tableSplit: 2,
}, options );
var tbl = this,
tblHead = tbl.children('thead'),
tblBody = tbl.children('tbody');
if(tbl.is('table')) {
tbl.html('<div class="js-split-table-container js-split-table-container-' +
settings.tableSplit + '" />')
.children().unwrap()
.each(function() {
var rowsPerTable = [],
rows = tblBody.children('tr'),
minRowsPerTable = Math.floor(rows.length / settings.tableSplit),
difference = rows.length - (minRowsPerTable * settings.tableSplit);
for (var i = 0; i < settings.tableSplit; i++) {
if (i < difference) {
rowsPerTable[i] = minRowsPerTable + 1;
} else {
rowsPerTable[i] = minRowsPerTable;
}
}
for (i = 0; i < settings.tableSplit; i++) {
$('<table class="js-split-table js-split-table-' + (i + 1) + '"><tbody /></table>')
.prepend(tblHead.clone())
.appendTo($(this))
.wrap('<div class="js-split-table-item js-split-table-item-' + (i + 1) + '" />');
for (var j = 0; j < rowsPerTable[i]; j++) {
var pointer = 0;
for (var k = 0; k < i; k++) {
pointer += rowsPerTable[k];
}
$(this).find('.js-split-table-' + (i + 1) + ' tbody')
.append(rows[j + pointer]);
}
}
});
}
};
}(jQuery));