我有一个应用程序,它使用jQuery MultiSelect插件来选择几个Box(最多20个)。应用程序正在客户端浏览器上“构建”(是的......它应该构建在服务器上,但这不是我的选择),每个选择框可以包含多达15,000个动态加载的选项(如果重要的话,通过WebFocus) 。正在抓取数据(通过jQuery AJAX get call)。作为测试,我将7400个数据点(通过插件)加载到一个选择框中。在IE8上,这需要104秒。在FF上它只花了4秒。
这是典型的还是正在发生的事情,我没有看到???
相关代码在这里:
// Get xml data & append to selectbox
$.ajax({
type: "GET",
url: "test.xml",
dataType: "xml",
success: function(xml){
$(xml).find('ReportOptions').each(function() {
var cNum = $(this).find('cusipnum').text(); // assign vars to incoming data
$('#cusip').append('<option>'+cNum+'</option>'); // append data to options
});
$('#cusip').multiselect('refresh');
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Error Status:"+xhr.status+", "+thrownError);
}
});
答案 0 :(得分:1)
是的,这是典型的。如果你在IE9 +中运行它,你会看到改进。我发现在IE8中,jquery的任何大规模样式应用程序或DOM操作都非常慢。话虽如此,可以对此代码进行改进。
使用IE8 Developer Tools(F12)分析此代码的性能配置文件。 $('#cusip')。append应该是这里的大消费者。你强迫jquery在每个循环上查找'#cusip'。