4

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

我将如何实现会自动更新的东西?

4

2 回答 2

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')

于 2011-04-30T05:33:05.457 回答
1

我没有运气就尝试了上述方法。我发现了这个。可能会有所帮助。

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

这里<span data-livestamp="your time goes here..."></span>就足够了。

不要忘记添加jquery.jsmoment.js之前livestamp.js

于 2016-01-24T06:41:25.443 回答