Timer 使用jquery在各种项目上显示n次以前的内容,[在加载DOM后生成新元素时发出]

Timer 使用jquery在各种项目上显示n次以前的内容,[在加载DOM后生成新元素时发出],timer,jquery,timeago,Timer,Jquery,Timeago,我使用Jquery插件来显示时间 问题是timeago将不会对动态生成的项目生效 $(document).ready(function() { $(".timeago").timeago(); // works perfectly fine for the items which are loaded on page load //$(".timeago").live(timeago()); // gives me an er

我使用Jquery插件来显示时间

问题是timeago将不会对动态生成的项目生效

    $(document).ready(function() {

         $(".timeago").timeago();       // works perfectly fine for the items which are loaded on page load

         //$(".timeago").live(timeago());      // gives me an error ie timeago is not defined

         //$(".timeago").live($(".timeago").timeago());  // gives me an error too much recursion.
         jQuery.timeago.settings.allowFuture = true;
});
通过谷歌搜索,我了解了一些东西,比如:

使用live与使用bind相同,只是它仅限于事件click、dblclick、keydown、keypress、keyup、mousedown、mousemove、mouseout、mouseover和mouseup

现在我没有点击事件,怎么办?如何绑定此文件?

查看此主题 这里讨论了如何在动态加载的项上放置timeago 例如,ajax请求的结果

PS:allowFuture与在页面上新创建的项目上放置timeago无关。它只允许将来的日期(例如“3天内”、“下周”)

.live()
.bind()
为事件分配回调。在您的情况下,您没有要为其分配函数的事件,因此函数将失败

理论上,您可以将回调分配给自定义事件。但是,无论何时生成项目,您都必须手动触发事件(使用
.trigger()
)。例如:

$("abbr.timeago").live("timeago", function() {
   $(this).timeago();
});

// ... and in the bit that generates your item
$new_item.trigger("timeago")
演示:

当然,在这种情况下使用
.live()
纯粹是学术性的,并不能真正起到很好的作用


如果您确实有权访问生成项目的代码,则可以在生成项目时,简单地链接调用
.timeago()
,即dude。。请按当前时间重试。。3年前的时间戳不显示实际结果试试这个你的代码似乎不起作用除了设置未来日期和更改时间间隔,我看不出你的示例有什么不同。当然,如果您像您在问题中所做的那样设置
allowFuture=true
,则可以处理将来的日期。和你给我的一样。我只是改变了时间,恐怕我看不出有什么不同。他们俩似乎都像我预料的那样工作。在Firefox 3.6和IE8中试用过。很明显我在这里遗漏了一些东西。。。