jQuery: pagination
more at: http://web.enavu.com/tutorials/making-a-jquery-pagination-system/
by Muthuraman B
HTML
<table id="listTable" width="100%" class="table fundOnboardingReport" border="0">
<thead>
<tr>
<th class="placeholder">REQ ID</th>
<th class="placeholder">COUNTERPARTY</th>
<th class="placeholder">CLIENT LEGAL ENTITY NAME</th>
<th class="placeholder">LEI</th>
<th class="placeholder">GO-LIVE DATE</th>
<th class="placeholder">STATUS</th>
<th class="placeholder">ASSIGNEES</th>
<th> </th>
</tr>
</thead>
<tbody>
<tr class="graybg">
<td><a>NFL00001</a></td>
<td>JPMorgan EMEA Client Onboarding</td>
<td><a>Walmart Retirement Savings Fund</a></td>
<td>XXXXXXXXXXXXXXXX</td>
<td><a>View All</a></td>
<td>Completed</td>
<td>2</td>
<td class="f105"> </td>
</tr>
<tr style="display:none;">
<td colspan="8" class="text-center">Detail Empty</td>
</tr>
<tr class="graybg">
<td><a>NFL00002</a></td>
<td>JPMorgan EMEA Client Onboarding</td>
<td><a>Walmart Retirement Savings Fund</a></td>
<td>XXXXXXXXXXXXXXXX</td>
<td><a>View All</a></td>
<td>Completed</td>
<td>2</td>
<td class="f105"> </td>
</tr>
<tr style="display:none;">
<td colspan="8" class="text-center">Detail Empty</td>
</tr>
<tr class="graybg">
<td><a>NFL00003</a></td>
<td>JPMorgan EMEA Client Onboarding</td>
<td><a>Walmart Retirement Savings Fund</a></td>
<td>XXXXXXXXXXXXXXXX</td>
<td><a>View All</a></td>
<td>Completed</td>
<td>2</td>
<td class="f105"> </td>
</tr>
<tr style="display:none;">
<td colspan="8" class="text-center">Detail Empty</td>
</tr>
<tr class="graybg">
<td><a>NFL00004</a></td>
<td>JPMorgan EMEA Client Onboarding</td>
<td><a>Walmart Retirement Savings Fund</a></td>
<td>XXXXXXXXXXXXXXXX</td>
<td><a>View All</a></td>
<td>Completed</td>
<td>2</td>
<td class="f105"> </td>
...
CSS
.controls a{
padding:3px;
border:1px solid gray;
margin:2px;
color:black;
text-decoration:none
}
.active{
background:darkblue;
color:white !important;
}
JavaScript
$(document).ready(function() {
var show_per_page = 5;
var number_of_items = $('#listTable').find('tr.graybg').size();
var number_of_pages = Math.ceil(number_of_items / show_per_page);
console.log(number_of_items);
$('body').append('<div class=controls></div><input id=current_page type=hidden><input id=show_per_page type=hidden>');
$('#current_page').val(0);
$('#show_per_page').val(show_per_page);
var navigation_html = '<a class="prev" onclick="previous()">Prev</a>';
var current_link = 0;
while (number_of_pages > current_link) {
navigation_html += '<a class="page" onclick="go_to_page(' + current_link + ')" longdesc="' + current_link + '">' + (current_link + 1) + '</a>';
current_link++;
}
navigation_html += '<a class="next" onclick="next()">Next</a>';
$('.controls').html(navigation_html);
$('.controls .page:first').addClass('active');
$('#listTable').find('tr.graybg').hide();
$('#listTable').find('tr.graybg').slice(0, show_per_page).show();
});
function go_to_page(page_num) {
var show_per_page = parseInt($('#show_per_page').val(), 0);
start_from = page_num * show_per_page;
end_on = start_from + show_per_page;
$('#listTable').find('tr.graybg').hide().slice(start_from, end_on).show();
$('.page[longdesc=' + page_num + ']').addClass('active').siblings('.active').removeClass('active');
$('#current_page').val(page_num);
}
function previous() {
new_page = parseInt($('#current_page').val(), 0) - 1;
//if there is an item before the current active link run the function
if ($('.active').prev('.page').length == true) {
go_to_page(new_page);
}
}
function next() {
new_page = parseInt($('#current_page').val(), 0) + 1;
//if there is an item after the current active link run the function
if ($('.active').next('.page').length == true) {
go_to_page(new_page);
}
}