jQuery $ .each真的很慢

时间:2013-04-16 09:24:05

标签: jquery ajax internet-explorer

我正在尝试使用$.each$('<OPTION>')构建一个动态组合框,但在Firefox和其他浏览器上IE(在服务器响应后呈现数据需要3/4分钟)的速度非常慢没关系。

这是我构建组合的代码

var sel = ('#myDynCmb');
$.each(dataCollection, function(key,_value) {
    sel.append($("<OPTION>").val(key).text(_value));
});

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:6)

Dom操纵通常很慢,特别是当你附加到dom时。

一个好的做法是将所有html放入var并将此var的内容附加到dom,这会导致一个domopération,这会更快

var htmlToAppend = "<select>";
$.each(dataCollection, function(key,_value) {
    select += "<option value="+key+">"+_value+"</option>";
});
htmlToAppend += "</select>";
$('#myDynCmb').empty().append(htmlToAppend);

像这样的东西

答案 1 :(得分:0)

它可能是IE上的渲染问题(通常在DOM操作上很慢)。

您可以尝试这样的事情:

var dummyList = $("<select />");
$.each(dataCollection, function(key,_value) {
    dummyList.append($("<option />").val(key).text(_value));
});
$('#myDynCmb').empty().append(dummyList.find('option'));

因此,您将选项加载到虚拟列表(不在DOM中),然后将所有元素添加到列表中(在DOM中)。

答案 2 :(得分:0)

尝试所有的解决方案,但它仍然令人尴尬的慢,所以我必须将它切换到经典的JavaScript,新的选项,它现在超级快