jQuery hide post&显示下一篇文章

时间:2011-10-03 17:47:33

标签: php jquery mysql

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

我根本不想重新加载页面,是不是ajax。我想要的是排在列表底部的下一个帖子,因为已经隐藏了帖子。

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

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

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

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

我现在想知道的是,这可能吗?如果是这样,我可以在哪里开始使用?

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

3 个答案:

答案 0 :(得分:0)

执行此操作的简单方法是每次用户更改其过滤器设置时发出AJAX次呼叫。在MySQL查询中进行过滤,并返回应该显示的完整帖子列表。然后,这只是一个完全replacing当前帖子与新的帖子的问题。

有很多方法可以对此进行改进,例如保留以前看过的帖子但隐藏起来以减少您需要的数据库调用次数,但如果您刚刚启动该页面,我绝对不会为此烦恼。即使你接近完成,我也不知道我是否会烦恼 - 对于相对较小的优化来说,这是一个相当复杂的代码。

希望这有帮助!

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

SELECT * FROM posts WHERE liked = 1 LIMIT 10

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

然后使用jQuery / AJAX替换所有所有帖子的所有

答案 1 :(得分:0)

最简单的方法可能是完成大部分过滤和分页客户端。 There's even a jQuery plugin for pagination,而过滤就像$('.liked').hide()一样简单。

当然,您必须向客户返回超过2个帖子。

答案 2 :(得分:0)

所以每次点击Like / Dislike或Show / Hide All时都会调用数据库,你只想返回重要的结果......即。你是在后端而不是前端过滤你的结果

如果你想在前端完成所有这一切,你将不得不返回更多的帖子,然后返回两个。可能是5或10,然后根据类和点击页面上的事件隐藏和显示正确的帖子。