我正在使用Jquery插件http://timeago.yarp.com/来显示时间。
问题是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。
现在怎么办才能导致我没有任何点击事件?我怎么绑这个?
答案 0 :(得分:0)
看看这个主题 这里讨论了如何将timeago放在动态加载的项目上 例如ajax请求的结果。
Activate timeago on newly added elements only
PS:allowFuture与将timeago放在页面上新创建的项目上没有任何关系。它只允许将来的日期(即“3天”,“下周”)
答案 1 :(得分:0)
.live()
和.bind()
为活动分配回调。在您的情况下,您没有事件来分配函数,因此它失败。
理论上,您可以将回调分配给自定义事件。但是,无论何时生成项目,您都必须手动触发事件(使用.trigger()
)。例如:
$("abbr.timeago").live("timeago", function() {
$(this).timeago();
});
// ... and in the bit that generates your item
$new_item.trigger("timeago")
演示:http://jsfiddle.net/ZjuW4/9
当然,在这种情况下使用.live()
纯粹是学术性的,并没有真正有用的目的。
如果您有权访问生成项目的代码,则可以在生成项目时将.timeago()
简单地链接到{{1}} ,即http://jsfiddle.net/ZjuW4/3/