jQuery隐藏post &显示下一篇文章


jQuery hide post & show next post

我有一个页面(index.php),从mysql数据库拉帖子。帖子是分页的,每页限制为5个。每个帖子都有一个单选按钮对(喜欢/不喜欢)。索引页还允许用户通过复选框显示或隐藏所有喜欢/不喜欢的帖子。

无论是否使用ajax,我都不想重新加载页面。我想要的是下一个帖子出现在列表底部的帖子已经有隐藏。

假设每个页面有5个帖子(l=喜欢/d=不喜欢/NA =未决定):第1页:Post 1 (l), Post 2 (d), Post 3 (d), Post 4 (l), Post 5 (d)第2页:Post 6 (NA), Post 7 (NA), Post 8 (l), Post 9 (NA), Post 10 (NA)

如果用户决定隐藏所有不喜欢的帖子-所有不喜欢的帖子将被隐藏,但我现在得到的结果是:第1页:第1 (l)页,第4 (l)页第2页:Post 6 (NA), Post 7 (NA), Post 8 (l), Post 9 (NA), Post 10 (NA)

我想要的是:第1页:Post 1 (l), Post 4 (l), Post 6 (NA), Post 7 (NA), Post 8 (l)Page 2: Post 9 (NA), Post 10 (NA)

此外,出现在第1页的新帖子应该淡入,而旧帖子(1 &4)应该没有这样的效果(除了滑动,因为它们之间的div已经"消失")。

我现在想知道的是,这可能吗?如果有,我该从哪里开始呢?

我将更新代码,因为我了解更多,但现在我只需要有人指出我在正确的方向,因为谷歌没有帮助我在这方面。

要做到这一点,最简单的方法是在用户每次更改过滤器设置时发送一个AJAX调用。在MySQL查询中进行过滤,并返回应该显示的完整帖子列表。然后,只需用新的帖子完全替换当前的帖子。

有一些方法可以改善这一点,比如保留以前看到的帖子,但隐藏以减少你需要的DB调用的数量,但如果你只是开始这个页面,我绝对不会打扰。即使你已经接近完成了,我也不知道我是否需要费心-这是一堆相当复杂的代码,用于相对较小的优化。

希望这对你有帮助!

Edit:一些SQL示例-这个特定的示例将为您提供被喜欢的帖子的第一页,假设您每页显示10个帖子:

SELECT * FROM posts WHERE liked = 1 LIMIT 10

只需为不同的过滤器调整WHERE子句,并为每个页面的不同帖子数量调整LIMIT子句(如果喜欢是基于每个用户的,您可能还需要在那里加入JOIN,但我没有包括)。

然后使用jQuery/AJAX将当前显示的所有帖子替换为所有选定的帖子。

最简单的方法可能是在客户端执行大部分筛选和分页操作。甚至还有一个用于分页的jQuery插件,而过滤就像$('.liked').hide()一样简单。

当然,您必须向客户端返回2个以上的帖子。

所以每次你做一个调用数据库时,喜欢/不喜欢或显示/隐藏所有点击,你只是想返回的结果,即。您是在后端而不是前端过滤您的结果

如果你想在前端完成这些,你将不得不返回多于两个的帖子。可能是5或10,然后隐藏和显示基于类的正确帖子,并单击页面上的事件。