【问题标题】:JQuery & cloning huge tableJQuery & 克隆大表
【发布时间】:2010-08-12 14:18:32
【问题描述】:

我有一张大表,1 行,大约 2600 列(这是一个甘特图)

我要做的是克隆此表并将其复制 100 次到页面上的某个位置(而不是重绘表 100 次,因为它似乎效率较低,但我可能是错的)

var $templateTable = $("div#GTT_TLayout").clone();
//there are 100 divs matching it
$("div[id ^= 'taskgrid_bar_' ]").each(function(){  
    ...
    $(this).before($templateTable.html());
});

问题是一些客户遇到了这个“脚本超时”问题。

所以我的问题是,有没有更好的方法可以更有效地做到这一点?

非常感谢

【问题讨论】:

  • 您是否尝试过只将$templateTable 传递给before() 而不调用.html()
  • 我知道这太离谱了,但是如果你正在处理这么大的东西,并且如果客户端脚本太慢,那么逻辑上的下一步肯定是转向服务器端脚本吗?
  • @Pointy,尝试过,但由于某些原因,它没有生成表格,@Yi Jiang,也尝试过。但是,性能比 JQuery 方式还要差。尽管最终它会生成,但非常缓慢。我可以看到每一行一次生成一行。好处是它保证了图表会被生成。
  • 好吧,另一件可能要尝试的事情是进行更改,以便将表格的副本单独放入其他元素中,而不是将页面的整个部分(div 和所有)重建为一个大字符串值,然后一次性更新 DOM。

标签: javascript jquery performance


【解决方案1】:

您还不如在.each 之外对$templateTable 进行.html() 调用,因为调用100 次是没有意义的。无论如何,这应该会有所帮助。

【讨论】:

  • 好点@amurra。试了一下,稍微改进了一点,仍然会根据电脑引起问题。 :(
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2013-02-10
  • 1970-01-01
  • 2013-09-22
相关资源
最近更新 更多