如何使用jQuery timeago进行实时更新?

时间:2011-04-30 05:13:36

标签: javascript jquery timeago

我有一个值011-04-29T14:55:33.000Z这个值被推入jQuery模板。我使用timeago将日期转换为已用时间,但在写入模板后,随着时间的推移,它无法更新。

我如何实施会自动更新的内容?

2 个答案:

答案 0 :(得分:6)

假设您从此开始(来自timeago主页):

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>

现在,timeago插件会在重写内容时更改标题。您需要做的就是跟踪其他地方的时间戳,将其重新放回title属性,然后重新运行插件。像这样:

<abbr
    class="timeago"
    title="2008-07-17T09:24:17Z"
    data-ts="2008-07-17T09:24:17Z"
>July 17, 2008</abbr>

将成为这个:

<abbr
    class="timeago"
    title="July 17, 2008"
    data-ts="2008-07-17T09:24:17Z"
>2 years ago</abbr>

当您想要更新它时,只需将data-ts放回title并重新运行该插件:

$('.timeago').each(function() {
    var $this = $(this);
    $this.attr('title', $this.data('ts'));
}).timeago();

如果您使用的是较旧的jQuery,则可能需要使用$this.attr('data-ts')代替$this.data('ts')

答案 1 :(得分:1)

我没有运气就尝试了上述内容。我发现了这一点。可能会有所帮助。

https://mattbradley.github.io/livestampjs/

此处<span data-livestamp="your time goes here..."></span>已足够。

不要忘记在jquery.js之前添加moment.jslivestamp.js