我试图为博客中的帖子创建一个简单的排序选项。问题是我想要使用的最后一件事是基于JS的重定向,因为有些用户在其浏览器中没有启用JS,这就是为什么他们不能在我的博客中对帖子进行排序。我给大家举一个例子:NodeJS + JS:根据当前用户选择生成动态链接
我有几个类别在我的博客:
//categories selection
<ul>
<li class="active"><a id="cat1" href="/?category=music">Music</a></li>
<li><a id="cat2" href="/?category=photo">Photo</a></li>
<li><a id="cat3" href="/?category=cinema">Cinema</a></li>
<li><a id="cat4" href="/?category=computers">Computes</a></li>
</ul>
而且,我有两个排序选项:
//sorting options
<div>
<a class="active">Last posts</a>
<a>Last comments</a>
</div>
Depening当前活跃的元素,用户被重定向在页面上使用这些参数,例如'/?category = music & sort = posted'or'/?category = personal & sort = commented'。
例如,让我们在类别选择 'CINEMA' 标签是有源此时(
<li class="actvie"><a id="cat3" href="/?category=cinema">Cinema</a></li>
)。因此,如果用户点击最新评论链接,它应该重定向到
'/?category=cinema&sort=comments'
又如:目前最新评论是积极的(
<a class="active">Last comments</a>
)。用户点击类别选择中的计算,它应该重定向到
'/?category=computers&sort=comments'.
那么,有没有变种没有JS执行这种功能?如果不是,你能否给我建议最优雅的解决方案,除了手动运行类别中的每个元素并将选项排序并使用JS/jQuery生成链接?
在此先感谢!
服务器端:
db.collection("posts", function (err, collection) {
//getting posts dependinc on requested category
collection.find({category: req.query['category']}, {sort: [['time_added', -1]], limit:20}, function (err, posts) {
//getting posts and rendering page
});
});
更新:我发现一个马马虎虎的解决方案。对于单独的类别,我使用不同的帖子列表呈现两个div。一个用于'上次发布',另一个用于'最后评论'。排序选择器将只隐藏一个div并显示另一个div。这个问题只是数据传输到客户端的两倍。我知道,这将需要一点JS,但主要类别的链接将清楚没有'#' - hrefs。排序选项 - 这只是一个toogle,它可能没有真正的链接。
如果你决定这样做,你实际上可以使用CSS而不是Javascript来在两者之间切换。在CSS中查看:focus,:active或:target选择器。这是一个例子http://www.w3.org/Style/Examples/007/target#item2 – 2012-07-29 12:58:49