javascript - 引导卡上的分页
问题描述
我在我的页面上使用引导卡,它们将与 MySQL 数据库中的 PHP 一起显示。我想添加分页,这样我可以一次显示 20 张卡片。我找到了 pagination.js 脚本,但我无法让它工作,也不明白为什么。
这是我目前使用纯 HTML 的卡片之一。例如,我有 30 个,我想一次只显示其中的 20 个。
<div class="card" id="motor-cards">
<img class="card-img-top" src="images/motor.jpg" alt="Card image cap">
<div class="card-body">
<div class="short-data">
<h5 class="card-title">Yamaha example</h5>
<h6 class="card-subtitle mb-2 text-muted">11987235 $</h6>
<div class="card-footer">
<i class="fas fa-calendar-alt text-center" data-toggle="tooltip" title="example"><br>2001</i>
<i class="fas fa-road text-center" data-toggle="tooltip" title="Kilométeróra állása"><br>15000km</i>
<i class="fas fa-tachometer-alt text-center" data-toggle="tooltip" title="example"><br>100cm³</i>
<i class="fas fa-id-card text-center" data-toggle="tooltip" title="example"><br>A2</i>
</div>
</div>
<a href="#" class="btn btn-primary" data-toggle="modal" data-target="#detailsModal">Details</a>
<div class="card-footer-icons">
<i class="fas fa-warehouse fa-lg" data-toggle="tooltip" title="Garagehelyezés"></i>
<i class="fas fa-share-alt fa-lg" data-toggle="tooltip" title="Share" style="padding-left: 5px;"></i>
</div>
</div>
</div>
这是分页的 html,我应该添加到我的代码中,但不明白在哪里。如果我把它放在我的“卡片”类之上,那么什么也不会发生。
<div id="data-container"></div>
<div id="pagination-container"></div>
和jQuery:
$('#pagination-container').pagination({
dataSource: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
pageSize: 10,
callback: function(data, pagination) {
// template method of yourself
var html = template(data);
$('#data-container').html(html);
}
})
解决方案
要使分页起作用,您需要数据。在这里,您将 dataSource 指定为值为 1 - 16 的数组。如果您希望对卡片进行分页,则需要卡片的数据源:作为数组 - 在您的情况下,其中 30 个 - 我相信,以及模板函数必须接受数据并返回 html - 在您的情况下,是一张卡片的 HTML。
例如,假设您的数据源是这样的。
var data = [
{
id: 'motor-cards',
img: {
src: 'images/motor.jpg',
desc: 'Card image cap'
}
name: 'Yamaha example',
usd: 123456.00,
year: 2001,
km: 15000,
cm3_per_rev: 100
size_class: 'A2'
},
...
];
那么你会有一个像这样的模板函数
var template = function (vehicle) {
return (
`<div class="card" id="${vehicle.id}">
<img class="card-img-top" src="${vehicle.img.src}" alt="${vehicle.img.desc}">
<div class="card-body">
<div class="short-data">
<h5 class="card-title">${vehicle.name}</h5>
<h6 class="card-subtitle mb-2 text-muted">${vehicle.usd} $</h6>
<div class="card-footer">
<i class="fas fa-calendar-alt text-center" data-toggle="tooltip" title="example"><br>${vehicle.year}</i>
<i class="fas fa-road text-center" data-toggle="tooltip" title="Kilométeróra állása"><br>${vehicle.km}km</i>
<i class="fas fa-tachometer-alt text-center" data-toggle="tooltip" title="example"><br>${vehicle.cm3_per_rev}cm³</i>
<i class="fas fa-id-card text-center" data-toggle="tooltip" title="example"><br>${vehicle.size_class}</i>
</div>
</div>
<a href="#" class="btn btn-primary" data-toggle="modal" data-target="#detailsModal">Details</a>
<div class="card-footer-icons">
<i class="fas fa-warehouse fa-lg" data-toggle="tooltip" title="Garagehelyezés"></i>
<i class="fas fa-share-alt fa-lg" data-toggle="tooltip" title="Share" style="padding-left: 5px;"></i>
</div>
</div>
</div>`
);
}
所以你在 html 中不会有这 30 张卡片,而是只有容器。
完整的例如。
<div class="pagination-wrapper">
<div id="cards-container">
<!-- cards will be put here by pagination.js -->
</div>
<div id="pagination-container">
<!-- the pagination controls will be put here by pagination.js -->
</div>
</div>
<script>
var data = [
{
id: 'motor-cards',
img: {
src: 'images/motor.jpg',
desc: 'Card image cap'
}
name: 'Yamaha example',
usd: 123456.00,
year: 2001,
km: 15000,
cm3_per_rev: 100
size_class: 'A2'
},
... // 30 of similar objects for your cards
];
var template = function (vehicle) {
return (
`<div class="card" id="${vehicle.id}">
<img class="card-img-top" src="${vehicle.img.src}" alt="${vehicle.img.desc}">
<div class="card-body">
<div class="short-data">
<h5 class="card-title">${vehicle.name}</h5>
<h6 class="card-subtitle mb-2 text-muted">${vehicle.usd} $</h6>
<div class="card-footer">
<i class="fas fa-calendar-alt text-center" data-toggle="tooltip" title="example"><br>${vehicle.year}</i>
<i class="fas fa-road text-center" data-toggle="tooltip" title="Kilométeróra állása"><br>${vehicle.km}km</i>
<i class="fas fa-tachometer-alt text-center" data-toggle="tooltip" title="example"><br>${vehicle.cm3_per_rev}cm³</i>
<i class="fas fa-id-card text-center" data-toggle="tooltip" title="example"><br>${vehicle.size_class}</i>
</div>
</div>
<a href="#" class="btn btn-primary" data-toggle="modal" data-target="#detailsModal">Details</a>
<div class="card-footer-icons">
<i class="fas fa-warehouse fa-lg" data-toggle="tooltip" title="Garagehelyezés"></i>
<i class="fas fa-share-alt fa-lg" data-toggle="tooltip" title="Share" style="padding-left: 5px;"></i>
</div>
</div>
</div>`
);
}
var $cardsContainer = $('#cards-container');
$('#pagination-container').pagination({
dataSource: data,
pageSize: 20,
callback: function(data, pagination) {
$cardsContainer.html(template(data));
}
})
</script>
注意:您可能需要根据您的用例在这里和那里进行调整。
推荐阅读
- python - 如何解决函数中的 os.walk 错误?
- angular - 角度反应形式模式不起作用
- perl - Perl 模块 LWP::Protocol::http 中的问题
- vb.net - VB.NET 并行处理数据集中的每个数据表
- jupyter-notebook - Jupiter notebook 文本编辑器中的代码折叠
- python - 读取 txt 文件中的 md5 哈希值并与文件的 md5 哈希值进行比较
- laravel - 如何在使用多重身份验证或为每个类别的用户使用单独的表之间进行选择?
- javascript - 使用在页面中间触发滚动的 Javascript 滚动网页
- reactjs - 测试 React 组件 -> setInterval
- python - Pygame:实例化一个 Mixer 对象