1

好的,我想为帖子和通知等制作 Facebook 的自动时间增量,例如,当帖子到达时,例如 5 秒前。

我如何使用 jQuery 使其自动增加而不必为 timeago 解析服务器。

它可以增加到数小时和数天。

我找到了一个脚本,并尝试修改它,但它不起作用: 任何 jquery 插件,它自动更新页面所有帖子的时间

$.fn.UpdateSince = function(interval) {

    var times = this.map(function(){ return { e: $(this), t: parseInt($(this).html()) }; });

    var format = function(t) {
        if (t > 60) {
            return Math.floor(t / 60) + ' minutes ago'
        } else if(t > 3600){
            return Math.floor(t / 3600) + ' hours ago'
        } else if(t > 86400){
            return Math.floor(t / 86400) + ' days ago'
        } else {
            return t + ' seconds ago';
        }
    }

    var update = function(){
        $.each(times, function(i, o){
            o.e.html(format(Math.round((o.t + 1000))));
        });
    };

    window.setInterval(update, interval);
    update();

    return this;
}

$('.TimeSince').UpdateSince(1000);
4

2 回答 2

2

已经有一个非常好的插件叫做timeago可以做到这一点。

只需包括它:

<script src="jquery.timeago.js" type="text/javascript"></script>

并添加一些代码:

$('abbr.timeago').timeago();

您的 HTML 应如下所示:

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>
于 2012-12-27T09:16:49.460 回答
0

看起来您now从原始脚本中删除了变量,它需要知道它是什么时间才能运行!

getTime()方法从您的系统时钟返回一个值 - 而不是服务器。

顺便说一句,您应该颠倒代码中条件的顺序 - 首先放置“天”,然后是“小时”,然后是“分钟”:

if(t > 86400) {
    return Math.floor(t / 86400) + ' days ago';
} else if(t > 3600) {
    return Math.floor(t / 3600) + ' hours ago';
} else if(t > 60) {
    return Math.floor(t / 60) + ' minutes ago';
} else {
    return t + ' seconds ago';
}

t否则,如果大于,该函数将始终返回“秒” 60

于 2012-12-27T09:23:05.907 回答