2014-06-27 123 views
0

使用Moments.js庫我試圖從每個時間標記中獲取datetime屬性的值,並使用自然語言輸出時間。jQuery函數只運行一次

有鑑於此:

<time datetime="2014-06-27"></time> 

的結果將是:

<time datetime="2014-06-11">17 hours ago</time> 

使用此:

$(document).ready(function(){ 
    var time = $('time'), 
     date = moment(time.attr('datetime')), 
     update = function(){ 
        time.html(date.fromNow()); 
       }; 

    update(); 
}); 

它的工作原理,但只適用於第一次元素。所有額外的時間元素也在說「17小時前」。

這是我的猜測,該函數僅在第一次執行時運行一次。

我怎樣才能確保它爲每個運行,並有效地這樣做?

回答

2

您需要遍歷所有時間標記。現在,您只能將其應用於<time>的第一個實例。使用jQuery .each()

$(document).ready(function(){ 
    var time = $('time'); 

    time.each(function() { 
     date = moment($(this).attr('datetime')); 
     $(this).html(date.fromNow()); 
    }); 
}); 

jsFiddle Demo

+0

謝謝你,讓我不得不這樣做的意義。如果我複製並粘貼你的代碼示例,它不適用於我,但我會玩弄它。 – Rich

+1

@rick see edit;我犯了幾個語法錯誤,並在一個演示鏈接中添加。 –

+0

生病!作品完美無瑕。感謝芽! – Rich