2011-05-12 64 views
1

我有动态创建,与jQuery的分层列表的性能问题。我从服务器获取通过JSON我的数据,然后用这使其客户端:jQuery大型列表性能

for (var i = 0; i < myArray.length; i++){ 
    var subArr = myArray[i]; 
    var newElm = "<li id="+subArr.node_order+" value="+subArr.id+" class='list-item'><span>"+subArr.node_name+"</span><ul></ul></li>"; 
    var parent = $("li#"+subArr.parent_id+" ul"); 

    if(parent[0] != undefined){ 
     $(parent[0]).append(newElm); 
    } else{ 
     sortable.html("<ul>"+newElm+"</ul>"); 
    } 
} 

列表可高达15,000名单“礼”的项目。与约6500项目,数据从服务器检索大约。 1.5秒,但在建立和绘制列表之后大约需要4.4秒。这是迄今为止我所见过的最快的,但11k +物品是正常的。我也想要最小化任何插件,因为这个列表是可拖拽的且非常动态的,所以拖拽/放置不会被激活,直到悬停在“范围”上。

任何指针,非常感谢!

+1

你需要打破它。在用户看不到15k条目一次!首先得到最重要的 - 呈现客户。然后进行到下一个..直到一切完成。或者你将需要使用服务器端渲染,而不是像linq,xml转换等东西。 – ppumkin 2011-05-12 12:49:04

+0

你可能想要把它分解成小部分,比如加载第一个500然后用ajax代码从服务器获得另一个500等等,但11k +很适合通过html和js处理(从我的观点来看) – 2011-05-12 13:57:15

回答