JSFiddle - React, Tailwind, and code Playground
HTML
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>Название статьи</th>
<th>Дата публикации</th>
<th>Категория</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>
<a href="admin.php?action=editArticle&articleId=7">Разработка ГИС для сравнения площади посева сельскохозяйственных угодий</a>
</td>
<td>13 Jun 2014</td>
<td>
ГИС </td>
</tr>
<tr>
<td>2</td>
<td>
<a href="admin.php?action=editArticle&articleId=17">Автоматическая расстановка дорожных знаков</a>
</td>
<td>13 Jun 2014</td>
<td>
ГИС </td>
</tr>
<tr>
<td>1</td>
<td>
<a href="admin.php?action=editArticle&articleId=7">Разработка ГИС для сравнения площади посева сельскохозяйственных угодий</a>
</td>
<td>13 Jun 2014</td>
<td>
ГИС </td>
</tr>
<tr>
<td>2</td>
<td>
<a href="admin.php?action=editArticle&articleId=17">Автоматическая расстановка дорожных знаков</a>
</td>
<td>13 Jun 2014</td>
<td>
ГИС </td>
</tr>
<tr>
<td>1</td>
<td>
<a href="admin.php?action=editArticle&articleId=7">Разработка ГИС для сравнения площади посева сельскохозяйственных угодий</a>
</td>
<td>13 Jun 2014</td>
<td>
ГИС </td>
</tr>
<tr>
<td>2</td>
<td>
<a href="admin.php?action=editArticle&articleId=17">Автоматическая расстановка дорожных знаков</a>
</td>
<td>13 Jun 2014</td>
<td>
ГИС </td>
</tr>
<tr>
<td>1</td>
<td>
<a...
CSS
/*!
* Bootstrap v3.1.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
margin: .67em 0;
font-size: 2em;
}
mark {
color: #000;
background: #ff0;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
height: 0;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
font: inherit;
color: inherit;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
padding:...
JavaScript
$('table.table').each(function() {
var currentPage = 0;
var numPerPage = 5;
var $table = $(this);
$table.bind('repaginate', function() {
$table.find('tbody tr').hide().slice(currentPage * numPerPage, (currentPage + 1) * numPerPage).show();
});
$table.trigger('repaginate');
var numRows = $table.find('tbody tr').length;
var numPages = Math.ceil(numRows / numPerPage);
var $pager = $('<ul class="pagination"></ul>');
var $previous = $('<li><a href="#">«</a></li>');
var $next = $('<li><a href="#">»</a></li>');
for (var page = 0; page < numPages; page++) {
$('<span class="page-number"></span>').text(page + 1).bind('click', {
newPage: page
}, function(event) {
currentPage = event.data['newPage'];
$table.trigger('repaginate');
$(this).addClass('active').siblings().removeClass('active');
}).appendTo($pager).addClass('clickable');
}
$pager.insertBefore($table).find('span.page-number:first').addClass('active');
$previous.insertBefore('span.page-number:first');
$next.insertAfter('span.page-number:last');
$next.click(function (e) {
$previous.addClass('clickable');
$pager.find('.active').next('.page-number.clickable').click();
});
$previous.click(function (e) {
$next.addClass('clickable');
$pager.find('.active').prev('.page-number.clickable').click();
});
$table.on('repaginate', function () {
$next.addClass('clickable');
$previous.addClass('clickable');
setTimeout(function () {
var $active = $pager.find('.page-number.active');
if ($active.next('.page-number.clickable').length === 0) {
$next.removeClass('clickable');
} else if ($active.prev('.page-number.clickable').length === 0) {
$previous.removeClass('clickable');
}
});
});
...