Chrome通过jquery清空我的列表框真的很慢

时间:2011-03-11 16:14:34

标签: javascript jquery html google-chrome

我允许用户搜索列表框,该列表框缩小了所述列表框中包含的结果。

ajax请求快速返回结果,chrome可以快速添加结果。问题出在我实际清空列表框的中间步骤。

以下是代码:

function PopulateListBox(data, listBox) {

    var options = '';
    if (data != null) {
        for (var i = 0; i < data.length; i++) {
            options += "<option value=\"" + data[i].Id + "\">" + data[i].Name + '</option>';
        }
    }
    listBox.empty().append(options);
}

其中data是一个JSON数组,listbox是一个jquery选择器,带有一个列表框的ID(选择器是ID,例如$('#listbox')。列表框中有大约5-10k个选项。

Firefox甚至IE都能很好地解决这个问题,但是Chrome很糟糕(“最快的js引擎”google发生了什么?)。

我正在使用最新的jquery(1.5.1)和Chrome 11.0.696.3 dev。 (我也使用FF 3.6和IE 8)

2 个答案:

答案 0 :(得分:2)

使用html()方法代替empty()后跟append()可能会更快:

listBox.html(options);

答案 1 :(得分:1)

出于好奇,你试过replaceWith吗? (docs在这里。) 你需要有一个div包装你的listBox,那就是你传递给PopulateListBox函数的那个​​。您还需要手动将options变量与列表框的开始和结束标记信息包装在一起(如下所示为伪html):

...
options = "<listbox tag>" + options + "</listbox tag>";
listBoxWrapperDiv.replaceWith(options);
...