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

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

谢谢!

【问题讨论】:

    标签: jquery ajax jquery-plugins


    【解决方案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', ...);)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2012-05-18
    • 2016-12-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多