1

所以我在我的 Rails 3 应用程序中使用timeago插件,将它包装在这个函数中(注意,超时只是让 timeago 字符串随时更新到分钟):

function doTimeago() {
  $('.timeago').each(function() {
    var $this = $(this);
    if ($this.data('active')!='yes') {
      $this.timeago().data('active','yes');
    }
  });
}

然后在我的application.js

$(function() {
  doTimeago();
}

这很好用,直到我使用remote调用加载一些元素。我研究了一下,没有找到可行的解决方案。我不喜欢按照这个问题livequery的建议添加插件,因为它似乎已被弃用。

我正在考虑将此 JS 代码添加到js.erb我的应用程序中每个文件的末尾,但感觉确实重复且令人讨厌。

doTimeago();

问题第 1 部分:¿ 有没有一种简单的方法可以在每次js.erb执行后注入该代码?

问题第 2 部分:¿我如何实现使用 ajaxy 加载的元素的主要目标timeago

4

1 回答 1

1

您可以将其绑定到ajaxComplete事件,如下所示:

$(document).on('ajaxComplete', function(){
  do_timeago();
});

顺便说一句,我不明白你的do_timeago功能超时。此外,JS 最佳实践与 ruby​​ 有一点不同,请考虑将您的函数重命名为doTimeago.

希望能帮助到你。

于 2012-11-13T11:25:39.573 回答