0

例如,如果我们在 html 中有选择/选项/下拉框。如果数组大小为 5000,则 1) 在 jQuery 中比 2) 快。

1)首先制作一个字符串:

var str = '';
for (var i = 0; i<an_array.length; i++) {
  str +='<option value="' + an_array[i] + '">' + an_array[i] + '</option>';
}
jQuery("#my_select").append(str);

2)每次追加:

for (var i = 0; i<an_array.length; i++) {
  jQuery("#my_select").append(
    jQuery('<option></option>').val(an_array[i]).html(an_array[i])
  );
}

我的问题是:jQuery 或 jqGrid 是否具有这样的功能,即先创建一个缓存字符串,然后在完成后将所有内容发布到 html 上?还是我们已经在 jqGrid 中使用这种方式?我问这个问题的原因是当我有超过 500 列时,jqGrid 似乎真的很慢。这就像在 C 中一样。您可以在每次执行 fprintf 时自动刷新到文件,也可以在完成后手动刷新它。

提前致谢。

4

1 回答 1

0

我已经在 jQuery 文档中多次看到,在多次重复相同的 DOM 内容时应该始终使用缓存对象,因为每次遍历 DOM 都需要更多的处理能力。

我会这样编写您的解决方案:-

HTML

<select id="my_select"/>

JavaScript/jQuery

//an array to use for demonstration
var arr = ["one", "two", "three", "four", "five"];

var $frag = $();
$.each(arr, function () {
    $frag = $frag.add($("<option/>").val(this).text(this));
});
$("#my_select").append($frag);

注意行var $frag = $(); . $()创建了一个空的jQuery 对象,我在变量名$frag前面加上了一个$只是为了提醒自己它是一个 jQuery 对象而不是文本字符串。

希望能满意地回答你的问题。

最好的问候,艾伦

于 2012-08-18T09:34:29.627 回答