0

我有一个应用程序使用 jQuery MultiSelect 插件来处理多个选择框(最多 20 个以上)。该应用程序正在客户端浏览器上“构建”(是的......它应该构建在服务器上,但这不是我的选择)并且每个选择框可以包含多达 15,000 个动态加载的选项(通过 WebFocus,如果这很重要) . 正在抓取数据(通过 jQuery AJAX get 调用)。作为测试,我将 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);
         }
    }); 
4

1 回答 1

1

是的,这是典型的。如果您在 IE9+ 中运行它,您应该会看到改进。我发现任何大型风格的应用程序或 jquery 的 DOM 操作在 IE8 中都非常慢。话虽如此,可以对此代码进行改进。

要使用 IE8 开发人员工具 (F12) 分析此代码的性能配置文件。$('#cusip').append 应该是这里的大消费者。您正在强制 jquery 在每个循环上查找“#cusip”。

于 2012-11-27T00:35:40.923 回答