【问题标题】:How to highlight new items on the site since last visit with jquery?自上次访问 jquery 以来,如何突出显示网站上的新项目?
【发布时间】:2012-07-02 00:48:38
【问题描述】:

我在网站上有几个 div。我想突出显示自上次访问以来的新项目。

我不想为此使用 php 和 mySQL,因为: - 我不想将每个用户的上次访问信息存储在数据库中 - 我希望这也适用于未注册/未登录的用户 - 主要内容是缓存的,所以我不能向不同的用户输出不同的内容。

我认为这给我留下了一个解决方案:cookies + javascript: - 检查cookie是否存在 - 如果是,则突出显示新项目(例如向 div 添加一个类) - 更新 cookie

那么,我该怎么做呢?

这些 div 当前使用相同的类,并且它们没有 id,因此如果需要,我可以将 div 的日期或项目的主要 ID 放在那里。

【问题讨论】:

  • 您的问题是关于“如何突出显示”还是“如何读取/写入 cookie”?
  • 添加类可以轻松突出显示。我的问题是如何使用 cookie 将新 div 与旧 div 分开?并在客户端突出显示所有这些新项目。
  • 您需要在 cookie 中存储 div id 并且它与创建的 timestamp 相关联。把它想象成 hashmap 一样的结构
  • 理论上这将是一个很好的解决方案,但如何编码呢? $("div.items" [where timestamp > timestamp in cookie]).addClass("newitems")

标签: jquery cookies


【解决方案1】:

您可以将data-timestamp="[current_timestamp]" 属性添加到您的div。然后将上次访问的时间戳存储在cookie中并添加这样的类

$('.divClass').filter(function() {
  return $(this).attr("data-timestamp") > "[last_visit_timestamp]";
}).addClass('highlight');

(见jQuery: Selecting all elements where attribute is greater than a value

您可以通过以下方式轻松读取/写入 cookie: https://github.com/carhartl/jquery-cookie/

【讨论】:

  • 谢谢,这正是我所需要的!效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
相关资源
最近更新 更多