【发布时间】:2015-04-30 16:39:45
【问题描述】:
我在砖石画廊上使用jQuery infinite-scroll 插件。我的问题是按随机ORDER BY rand() 排序时在无限滚动中加载重复记录。
例如:如果我在数据库中添加了 10 张图片,
- 加载主页 - 1 , 5 , 3 , 4 , 2 (随机加载五张图片)
- 加载第二页 - 6 , 2 , 9 , 8 , 5 (2 和 5 又加载了)
- 在没有 7 和 10 的情况下到达 END
index.php:
<?php
include ("includes/db.php");
$per_page = 5;
if (isset($_GET["page"])) {
$page = $_GET["page"];
}
else {
$page=1;
}
$start_from = ($page-1) * $per_page;
$query = "SELECT * FROM data ORDER BY rand() LIMIT $start_from, $per_page";
$result = mysqli_query ($con, $query);
?>
<?php
while ($row = mysqli_fetch_array($result)) {
?>
<div id ="container" class="transitions-enabled infinite-scroll clearfix">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<?php } ?>
<nav id="page-nav">
<a href="index.php?page=<?php echo $page ?>"></a>
</nav>
</div> <!-- END Container -->
当按 DESCENDING [ORDER BY 1 DESC] 排序时,所有这些代码都可以正常工作。我想我需要为此代码添加一些新内容。
script.js:
$(function() {
var $container = $('#container');
$container.imagesLoaded(function(){
$container.masonry({
gutter: 10,
itemSelector: '.item',
});
});
$container.infinitescroll({
// infinite scroll options...
navSelector : "#page-nav",
nextSelector : "#page-nav a",
itemSelector : ".item",
loading: {
img: 'http://i.imgur.com/6RMhx.gif',
speed: 0,
}
},
function( newElements ) {
var $newElems = $( newElements ).css({ opacity: 0 });
$newElems.imagesLoaded(function(){
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
}
);
});
【问题讨论】:
-
您要处理多少张图片?如果您可以在客户端中随机发送 all 和 splice 数组将相当简单,否则您必须跟踪发送的内容并相应地修改查询
-
每页 18 张图片,数据库中超过 100 张。
-
在 json 数组中发送一次所有图像数据,然后将随机逻辑移动到客户端。在填充 DOM 时从数组中删除...不会重复
-
我还是有同样的问题。请你能用一个小代码示例来回答这个问题来检查我的代码吗?感谢您的 cmets @charlietfl 谢谢。
标签: jquery mysql jquery-masonry infinite-scroll masonry