我正在尝试在我的代码上使用simplePagination。 (我正在使用MVC4 C#开发)
假设我有这堆代码
<table>
<thead>
<tr>
<td><input type="checkbox" name="select-all" id="select-all" /></td>
<td style="text-align: left">Name</td>
<td style="text-align: left">Created By</td>
<td style="text-align: left">Created Date</td>
</tr>
</thead>
<tbody>
<tr class="post">
<td><p><input Length="0" name="314" type="checkbox" value="true" /><input name="314" type="hidden" value="false" /></p></td>
<td>Window</td>
<td>John</td>
<td>01/01/2014 12:00:00 AM</td>
</tr>
<tr class="post">
<td><p><input Length="0" name="314" type="checkbox" value="true" /><input name="314" type="hidden" value="false" /></p></td>
<td>Door</td>
<td>Chris</td>
<td>01/01/2014 12:00:00 AM</td>
</tr>
<tr class="post">
<td><p><input Length="0" name="314" type="checkbox" value="true" /><input name="314" type="hidden" value="false" /></p></td>
<td>Floor</td>
<td>Michael</td>
<td>01/01/2014 12:00:00 AM</td>
</tr>
<tr class="post">
<td><p><input Length="0" name="314" type="checkbox" value="true" /><input name="314" type="hidden" value="false" /></p></td>
<td>Car</td>
<td>James</td>
<td>01/01/2014 12:00:00 AM</td>
</tr>
<tr class="post">
<td><p><input Length="0" name="314" type="checkbox" value="true" /><input name="314" type="hidden" value="false" /></p></td>
<td>Bike</td>
<td>Steven</td>
<td>01/01/2014 12:00:00 AM</td>
</tr>
</tbody>
</table>
*注意:在上面的代码中,我将类“post”添加到每个“tr”(表主体中的行)。这些行是由for循环(C#)动态生成的
从文档中,如果我想使用simplePagination,我必须像这样声明jquery:
$(function() {
$(selector).pagination({
items: 100,
itemsOnPage: 10,
cssStyle: 'light-theme'
});
});
实际上,我不太确定如何使用(*如何调用)此simplePagination。这是我第一次处理分页。
我已经尝试过将此代码放在桌子后面
<div class="pagination-page"></div>
并用“.pagination-page”更改jQuery调用方法中的“选择器”,但是它不起作用。
$(function() {
$('.pagination-page').pagination({
items: 100,
itemsOnPage: 10,
cssStyle: 'light-theme'
});
});
*表示仅在第一页显示
+--------------------------------------------------+
| [] | Name | CreatedBy | CreatedDate |
|--------------------------------------------------|
| [] | Window | John | 01/01/2014 12:00:00 AM |
| [] | Door | Chris | 01/01/2014 12:00:00 AM |
+--------------------------------------------------+
第二页将显示
+--------------------------------------------------+
| [] | Name | CreatedBy | CreatedDate |
|--------------------------------------------------|
| [] | Floor | Michael | 01/01/2014 12:00:00 AM |
| [] | Car | James | 01/01/2014 12:00:00 AM |
+--------------------------------------------------+
很快..
*注意:我不确定这个jquery如何检测到我们有多少项目并生成页面数并相应地放置这些项目。
最佳答案
关于此插件的一件事(可能会引起一些人的困惑)是,从技术上讲,它本身并未实现分页。它生成一个页面导航器,并通过jQuery事件提供将其简单地连接到我们自己的分页功能的方法。
假设您已按照问题中包含的simplePagination链接的要求执行了步骤1(如果需要CSS样式,则执行步骤2),然后以下jQuery将满足您的要求:
jQuery(function($) {
// Consider adding an ID to your table
// incase a second table ever enters the picture.
var items = $("table tbody tr");
var numItems = items.length;
var perPage = 2;
// Only show the first 2 (or first `per_page`) items initially.
items.slice(perPage).hide();
// Now setup the pagination using the `.pagination-page` div.
$(".pagination-page").pagination({
items: numItems,
itemsOnPage: perPage,
cssStyle: "light-theme",
// This is the actual page changing functionality.
onPageClick: function(pageNumber) {
// We need to show and hide `tr`s appropriately.
var showFrom = perPage * (pageNumber - 1);
var showTo = showFrom + perPage;
// We'll first hide everything...
items.hide()
// ... and then only show the appropriate rows.
.slice(showFrom, showTo).show();
}
});
// EDIT: Let's cover URL fragments (i.e. #page-3 in the URL).
// More thoroughly explained (including the regular expression) in:
// https://github.com/bilalakil/bin/tree/master/simplepagination/page-fragment/index.html
// We'll create a function to check the URL fragment
// and trigger a change of page accordingly.
function checkFragment() {
// If there's no hash, treat it like page 1.
var hash = window.location.hash || "#page-1";
// We'll use a regular expression to check the hash string.
hash = hash.match(/^#page-(\d+)$/);
if(hash) {
// The `selectPage` function is described in the documentation.
// We've captured the page number in a regex group: `(\d+)`.
$(".pagination-page").pagination("selectPage", parseInt(hash[1]));
}
};
// We'll call this function whenever back/forward is pressed...
$(window).bind("popstate", checkFragment);
// ... and we'll also call it when the page has loaded
// (which is right now).
checkFragment();
});
如果您想更全面地了解这一切的实际工作原理,则可以找到正在运行的示例here,以及有关simplePagination here的更详尽的指南。
编辑:添加了一段代码来处理URL片段(重新加载以及后退/前进),因为Mike O'Connor强调了这一点。您可以看到一个实时的URL片段处理here示例。
编辑2:如果您需要跨浏览器兼容性来进行后向/前向片段更新(即IE11 ...),请在实现上述代码之前添加History.js脚本。感谢Mike O'Connor的帮助:)
编辑3:如果要动态添加或删除内容,则需要手动更新分页器以反射(reflect)这些更改。我也为此举了一个例子。您可以看到它正在运行here。