jQuery timeago并不总是有效

时间:2014-12-04 08:07:11

标签: jquery timeago

我有这个来源,写的是前一段时间。 (我使用jQuery的timeago插件)

<script>
$(document).ready(function() {
    $("abbr.timeago").timeago();
});

function timeago(time) {
    isoTime = new Date();
    isoTime.setTime(time);
    return "<abbr class='timeago' title='"+isoTime.toISOString()+"'></abbr>";
}


function add() {
     $('#ex').append( timeago(time) );
}
</script>

当我尝试调用add()函数时,它并不总是有效。

效果很好

<script>
add();
</script>

但是当我尝试从按钮调用它时,无法正常工作

<button onclick='add()'>button</button>

我认为它不起作用因为这一行$("abbr.timeago").timeago();无法读取我添加的新<abbr>。 (也许它只能读取在此行<abbr>行为之前添加的$("abbr.timeago").timeago();

有人知道如何解决它?

1 个答案:

答案 0 :(得分:0)

尝试删除$(document).ready(..)块,改为定义add(),如下所示:

function add() {
     $('#ex').append( $(timeago(time)).timeago() );
}

作为旁注,最好避免给全局函数赋予与此处使用的jQuery方法相同的名称。 function timeago(..可以是function newElFromTime(time)

您甚至可以修改它以返回一个jQuery对象,该对象调用.timeago()方法而不是纯HTML字符串:

function newTimeagoFromTime(time) {
    isoTime = new Date();
    isoTime.setTime(time);
    return $("<abbr class='timeago' title='"+isoTime.toISOString()+"'></abbr>").timeago();
}

function add() {
     $("#ex").append(newTimeagoFromTime(time));
}