jqGrid 或 jQuery 是否具有在字符串中缓存 DOM 更改的功能?

Does jqGrid or jQuery have the functionality of caching DOM changes inside a string

本文关键字:DOM 缓存 功能 字符串 jQuery 是否 jqGrid      更新时间:2023-09-26

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

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 时自动刷新到文件,也可以在完成后手动刷新它。

提前谢谢。

我在 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 对象而不是文本字符串。

希望能令人满意地回答您的问题。

此致敬意艾伦