2014-12-04 99 views
0

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

某人有一个想法如何解决它?

+0

你定义'time'正接受从add()中传递给timeago()? – 2014-12-04 08:19:24

+0

嗨@HartSimha感谢您的帮助!但是,这不是问题。 – ldoroni 2014-12-04 08:23:22

+0

如果您依靠单击按钮将具有类'timeago'的元素插入到DOM中,则此元素将不会在执行'$(“abbr.timeago”)。timeago();'的位置存在。 ..'$(“abbr.timeago”)。timeago();'将在页面加载时执行,因此不会定位任何元素,除非页面加载页面上已经有“abbr.timeago” – 2014-12-04 08:48:54

回答

0

尝试删除$(文件)。就绪(..)块,而是定义add()如下:

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

作为一个侧面说明,它可能是最好的避免给全局函数的名称相同这里使用了一个jQuery方法。 function timeago(..可能是function newElFromTime(time)

你甚至可能修改它返回您调用.timeago()方法,而不是一个普通的HTML字符串jQuery对象:

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

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