0

我有这个来源,写的时间前。(我使用 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();

有人知道如何解决吗?

4

1 回答 1

0

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

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

附带说明一下,最好避免给全局函数提供与此处使用的 jQuery 方法相同的名称。function timeago(..可能function newElFromTime(time)

你甚至可以修改它以返回一个调用 .timeago() 方法的 jQuery 对象,而不是一个纯 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));
}
于 2014-12-04T09:53:10.577 回答