2011-04-30 31 views
4

我有一個值011-04-29T14:55:33.000Z這個值被推入jQuery模板。我使用timeago將日期轉換爲已用時間,但在寫入模板之後,隨着時間的推移,它無法更新。如何使用jQuery timeago進行實時更新?

我該如何實現可自動更新的內容?

+0

之前添加jquery.jsmoment.js您可以張貼在jsfiddle.net你的代碼,並提供有關你要完成的一點點更多信息? – 2011-04-30 05:26:12

回答

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

+2

我不確定OP是在詢問什麼,但我不得不使用'$('。timeago')。timeago('update',「2008-07-17T09:24:17Z」);'to改變它用來計算時間前的單詞的時間。 – 2013-04-17 02:28:04

+0

@Nolan:過去兩年界面是否發生了變化?我認爲timeago使用'title'屬性來獲取原始時間戳,然後用元素的內容覆蓋它,因此'data-ts'屬性保持未刷新的時間戳的版本。我有點猜測在這裏,2011-04-30很久以前:) – 2013-04-17 03:00:50

+0

是的,這就是它目前的工作方式,據我所知。但是,在元素初始化timeago之後設置'title' *不會改變參考時間。我相信它只會改變工具提示中顯示的內容,這是有道理的:標題包含工具提示文本,timeago將原始日期時間存儲在'element.data('timeago')'中。要獲取timeago來更改參考日期時間,可以在新的日期時間中使用「update」功能。 – 2013-04-17 04:58:51

1

我試過上面沒有運氣,我發現這個。可能會有所幫助。

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

這裏<span data-livestamp="your time goes here..."></span>就足夠了。

不要忘記livestamp.js

+0

謝謝兄弟。其作品。只是不要忘記livestamp.js – Tigin 2017-01-16 13:13:51

+0

很高興它有助於兄弟@蒂金 – m2j 2017-01-18 06:19:39