jQuery函数只运行一次

时间:2014-06-27 21:38:07

标签: javascript jquery

使用Moments.js库我尝试从每个时间标记中获取datetime属性的值,并使用自然语言输出时间。

鉴于此:

<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();
});

它有效,但仅适用于第一次元素。所有额外的时间元素也在说&#34; 17小时前&#34;。

我的猜测是该功能仅在第一个实例上运行一次。

我如何确保为每个人运行并有效地运行?

1 个答案:

答案 0 :(得分:2)

您需要遍历所有时间标记。现在,您只将它应用于<time>的第一个实例。使用jQuery .each()

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

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

<强> jsFiddle Demo