<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQuery 分页器示例</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
line-height: 1.6;
}
.container {
max-width: 800px;
margin: 0 auto;
}
.data-item {
padding: 10px;
border-bottom: 1px solid #eee;
}
.pagination {
margin-top: 20px;
text-align: center;
}
.pagination a {
display: inline-block;
padding: 8px 16px;
margin: 0 4px;
border: 1px solid #ddd;
text-decoration: none;
color: #333;
border-radius: 4px;
}
.pagination a.active {
background-color: #4CAF50;
color: white;
border: 1px solid #4CAF50;
}
.pagination a:hover:not(.active) {
background-color: #ddd;
}
.pagination a.disabled {
color: #aaa;
pointer-events: none;
cursor: default;
}
</style>
</head>
<body>
<div class="container">
<h1>jQuery 分页器示例</h1>
<p>这是一个简单的分页器实现,使用jQuery动态加载和显示数据。</p>
<!-- 插入的链接 -->
<div id="data-container">
<!-- 数据将在这里动态加载 -->
</div>
<div class="pagination" id="pagination">
<!-- 分页链接将在这里动态生成 -->
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
// 模拟数据 - 实际应用中可以从服务器获取
var allData = [];
for (var i = 1; i <= 100; i++) {
allData.push("数据项 #" + i);
}
// 分页设置
var currentPage = 1;
var itemsPerPage = 10;
var totalPages = Math.ceil(allData.length / itemsPerPage);
// 初始化分页
function initPagination() {
updatePaginationLinks();
loadPageData(currentPage);
}
// 加载指定页的数据
function loadPageData(page) {
var startIndex = (page - 1) * itemsPerPage;
var endIndex = startIndex + itemsPerPage;
var pageData = allData.slice(startIndex, endIndex);
var $container = $("#data-container");
$container.empty();
$.each(pageData, function(index, item) {
$container.append('<div class="data-item">' + item + '</div>');
});
}
// 更新分页链接
function updatePaginationLinks() {
var $pagination = $("#pagination");
$pagination.empty();
// 上一页按钮
var prevDisabled = currentPage === 1 ? 'disabled' : '';
$pagination.append('<a href="#" class="page-prev ' + prevDisabled + '">« 上一页</a>');
// 页码按钮
var startPage = Math.max(1, currentPage - 2);
var endPage = Math.min(totalPages, currentPage + 2);
if (startPage > 1) {
$pagination.append('<a href="#" class="page-link" data-page="1">1</a>');
if (startPage > 2) {
$pagination.append('<span>...</span>');
}
}
for (var i = startPage; i <= endPage; i++) {
var activeClass = i === currentPage ? 'active' : '';
$pagination.append('<a href="#" class="page-link ' + activeClass + '" data-page="' + i + '">' + i + '</a>');
}
if (endPage < totalPages) {
if (endPage < totalPages - 1) {
$pagination.append('<span>...</span>');
}
$pagination.append('<a href="#" class="page-link" data-page="' + totalPages + '">' + totalPages + '</a>');
}
// 下一页按钮
var nextDisabled = currentPage === totalPages ? 'disabled' : '';
$pagination.append('<a href="#" class="page-next ' + nextDisabled + '">下一页 »</a>');
}
// 分页点击事件
$(document).on('click', '.page-link', function(e) {
e.preventDefault();
currentPage = parseInt($(this).data('page'));
loadPageData(currentPage);
updatePaginationLinks();
});
$(document).on('click', '.page-prev', function(e) {
if (!$(this).hasClass('disabled')) {
e.preventDefault();
currentPage--;
loadPageData(currentPage);
updatePaginationLinks();
}
});
$(document).on('click', '.page-next', function(e) {
if (!$(this).hasClass('disabled')) {
e.preventDefault();
currentPage++;
loadPageData(currentPage);
updatePaginationLinks();
}
});
// 初始化
initPagination();
});
</script>
</body>
</html>