2012-03-08 133 views
0
$('#myClick').click(function() { 
      $('#fromList').find('option') 
      .remove() 
      .end() 

      for (var index = 0; index < 50000; index++) { 
       $('#fromList').find('option').end().append('<option value="' + index + '">Dist ' + index + '</option>').val('whatever'); 
      } 
     }); 

<select id="toList" name="drop1" class="listBox" multiple="multiple"> 
        <option value="1">item 1</option> 
        <option value="2">item 2</option> 
        <option value="3">item 3</option> 
        <option value="4">item 4</option> 
</select> 

我想使用Jquery将大量的数据转储到选择框中。现在大多数情况下,这只会让几百人进入选择框,但有时候对于某些客户来说,它可能会出现超过50,000人。Jquery压力测试

是否有可能将大量数据解析为动态选择框并期望页面仍能够响应?

请问Ajax会使这个表现更好吗?

或者我是否需要将这个想法一起转储?

现在用上面的代码超时。

+0

您如何期望您的客户在包含5万人的列表中找到1个人? – 2012-03-08 22:30:12

+0

通过用户的ID和名称。如果功能不够快,我可能会取消它,并强迫他们选择全部或全部类型的选项。 – 2012-03-08 22:33:49

回答

3

为了提高性能,最好的办法是将option s缓存在一个变量中,并最后添加所有内容以防止DOM上出现过多的回流,这非常昂贵。

var options = ''; 
for (var index = 0; index < 50000; index++) { 
    options += '<option value="whatever"' + index + '">Dist ' + index + '</option>'; 
} 
$('#fromList').append(options); 
+0

显着提高了性能。虽然我的机器速度很快,但我担心这个较慢的系统是更艰巨的任务。 – 2012-03-08 22:43:46