jQuery Pagination 二次開發,新增「首頁」「尾頁」「頁碼輸入跳轉」三大功能。items_per_page、num_edge_entries、num_display_entries、callback。jquery.js、pagination.js、pagination.css。百度網盤:https://pan.baidu.com/s/1nvaq99R 密碼:9nfb (含增強版 JS/CSS)。
<div class="clearbox">
<div class="x-box">
<h2><a>用戶列表</a></h2>
<table id="listData"></table>
</div>
<div id="Pagination" class="pagination"></div> <!-- 分頁容器 -->
</div>
<script type="text/javascript">
$(document).ready(function() {
getDataList(0, null); // 初始化載入第 1 頁
});
var rows = 10; // 每頁條數
var page = 1; // 當前頁 (內部用)
var initFlag = true; // 分頁插件只初始化一次
function getDataList(currPage, jq) {
$.ajax({
url: "page",
type: "post",
dataType: 'json',
data: { rows: rows, page: currPage + 1 }, // 插件 currPage 從 0 開始,後端從 1 開始
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: function(response) {
if (response.result && response.data && response.total > 0) {
if (initFlag) {
$("#Pagination").pagination(response.total, {
items_per_page: rows,
num_edge_entries: 1, // 邊緣顯示 1 頁
num_display_entries: 8, // 主體顯示 8 頁
callback: getDataList // 頁碼點擊回調
});
initFlag = false;
}
loadDataList(response.data);
} else {
$("#listData").html("<tr><td colspan='3'>暫無數據</td></tr>");
}
}
});
}
function loadDataList(listData) {
var html = "<tr class='t-header'>" +
"<td>頭像</td>" +
"<td>姓名</td>" +
"<td>密碼</td>" +
"</tr>";
$("#listData").html(html); // 清空重建表頭
for (var i = 0; i < listData.length; i++) {
var n = listData[i];
html = "<tr>" +
"<td><img src='getphoto?unid=" + n.uuid +
"' onerror=\"this.src='resources/img/default.png'\" " +
"style='width:48px;height:48px;border-radius:48px;'/></td>" +
"<td>" + n.username + "</td>" +
"<td>" + n.password + "</td>" +
"</tr>";
$("#listData").append(html);
}
}
</script>
@ResponseBody
@RequestMapping("page")
public Map page(HttpServletRequest request) {
int total = userService.getTotal(); // 總記錄數
int page = Integer.parseInt(request.getParameter("page")); // 當前頁 (1-based)
int rows = Integer.parseInt(request.getParameter("rows")); // 每頁大小
List data = userService.getCurrentPage((page - 1) * rows, rows);
boolean result = (data != null && !data.isEmpty());
Map map = new HashMap<>();
map.put("data", data);
map.put("total", total);
map.put("result", result);
return map;
}

draw() 方法中插入首頁/尾頁按鈕:<a class='first'>首頁</a>、<a class='last'>尾頁</a>。<input type='text' class='page-input'><button class='go-btn'>跳轉</button>。selectPage(0)、尾頁 → selectPage(totalPages-1)、跳轉 → 解析輸入值並 selectPage(val-1)。.first/.last/.page-input/.go-btn 樣式,保持原風格。| 現象 | 原因 | 解決 |
|---|---|---|
| 分頁不顯示 | total=0 或 data 為空 | 檢查後端返回 total/data 字段名、數據庫是否有數據 |
| 點擊頁碼無反應 | callback 未正確綁定 / JS 錯誤 | F12 Console 看報錯、確認 pagination.js 已載入 |
| 跳轉輸入無效 | 非數字/超出範圍 | JS 端校驗 parseInt、範圍 1~totalPages |
| 樣式錯亂 | CSS 未引入 / 類名衝突 | 引入 pagination.css、檢查類名前綴 |