【问题标题】:Possible performance issue when using too many livequery使用太多实时查询时可能出现的性能问题
【发布时间】:2012-11-20 02:42:19
【问题描述】:

正如标题所说,有什么问题吗?

例如,我是这样使用它们的:

$("abbr.timeago").livequery(function() {
    $(this).timeago();
});

$("#btnPhoto").livequery(function() {
    createUploader();
});

$("#inputTagline").livequery(function () {
    $(this).charCount();
});;

编辑 仅我的网页就使用了 100k 内存。
如果页面内容是由 ajax 生成的,有谁知道如何解决 .timeago() 问题吗?我真的很感激。谢谢

更新 现在我可以通过下面的@Linas answe 摆脱 livequery。 欢迎任何更好的答案!

【问题讨论】:

  • 可能重复livequery performance.
  • 更好的委托/直播,但你的项目是什么?这始终取决于您的需求。
  • 为什么要投反对票?我只是想要意见 T_T ..... jquery.timeago();需要 livequery 来检测动态生成的元素。这就是我使用它的原因。我知道 jquery.on 但它需要发生一些事件,例如“点击”。

标签: jquery html performance


【解决方案1】:

我正在从事与您类似的项目,并且我也使用 time ago 插件,所以我现在面临与您相同的问题。

我所做的是我创建了一个辅助函数,它可以执行各种操作,例如更新时间、删除未使用的内容等等。因此,当我更新页面上的任何内容时,我只需调用该帮助函数,而不是使用 livequery,从而节省大量内存。

编辑 这只是您为自己创建的一个非常简单的函数:

function helper(){
   //update all time that exists on current page
   //just put same class name in each time object for example class="time_ago"
   //now it will update each object with class "time_ago"
   $(".time_ago").timeago();
   //now do some other stuff like remove old content unbind events and so on here...
}

并且每次您使用某种通过 ajax 更新您的内容的功能时,它只需调用 helper(),它就会处理您需要的事情,无需担心插件及其性能,因为您拥有完整的控制你的脚本。

【讨论】:

  • 我无法获得您正在使用的辅助函数,请不要介意举一个简短的例子。 XD 顺便说一句,我猜:当调用 jquery.on 时,您调用辅助函数来更新“blablabla”?我说的对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
相关资源
最近更新 更多