jQuery:获取 .timeago() 以处理 DOM 就绪后加载的元素(Ajax)

Posted

技术标签:

【中文标题】jQuery:获取 .timeago() 以处理 DOM 就绪后加载的元素(Ajax)【英文标题】:jQuery: Get .timeago() to work on elements loaded after DOM ready (Ajax) 【发布时间】:2011-03-25 19:12:27 【问题描述】:

使用 pageless1 触发将旧的带时间戳的内容的 ajax 加载到页面末尾,我需要 .timeago() 来处理那些新加载的日期。它适用于您第一次到达页面时加载的内容,但不适用于稍后通过 Ajax 加载的内容。

谢谢!

【问题讨论】:

【参考方案1】:

对于运行插件(不基于事件处理程序的东西),您仍然可以使用.livequery() plugin,如下所示:

$('.selector').livequery(function() 
  $(this).timeago();
);

如果是事件处理程序,.live().delegate() 可以工作,或者如果它是插件,您也可以在加载的内容上运行插件,例如:

$.ajax(
  //options...
  success: function(data) 
    //do stuff
    $('.selector', data).timeago();
  
);

这会在该选择器上运行插件,但用于在该 AJAX 响应中返回的元素,使用 $(selector, [context]) 的上下文参数。

【讨论】:

谢谢,尼克!我明天试试这个…… 尼克:在文档准备期间(使用jQuery("abbr.timeago").timeago();)已经绑定它之后调用$('.selector').livequery(function()$(this).timeago(););有什么害处吗?还是这本质上类似于使用 livequery 刷新时间戳? 一个jQuery插件(即:timeago)只会在一个元素上初始化一次,所以多次调用它不会导致任何问题。相反,多次绑定事件处理程序可能会导致问题 ($(myElement).on('click', ...);)

以上是关于jQuery:获取 .timeago() 以处理 DOM 就绪后加载的元素(Ajax)的主要内容,如果未能解决你的问题,请参考以下文章

****timeago.js插件:jquery实现几分钟前几小时前几天前等时间差显示效果的代码实例

Timeago.js 使用语言环境配置

获取 jquery ui 进度条以进行动画处理

TimeAgo 总是显示为“Just Now”

Jade:如何包含 javascript 文件

timeago相当于Android