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)的主要内容,如果未能解决你的问题,请参考以下文章