Javascript $。每次在JSON数据上循环都会降低浏览器速度
我试图加载值至少为4000条记录的Json数据,我试图使用Json数据为select标记创建选项。我使用$.each进行迭代。这会挂断我的浏览器。任何人都可以提供解决方案来解决这个问题Javascript $。每次在JSON数据上循环都会降低浏览器速度,javascript,jquery,json,Javascript,Jquery,Json,我试图加载值至少为4000条记录的Json数据,我试图使用Json数据为select标记创建选项。我使用$.each进行迭代。这会挂断我的浏览器。任何人都可以提供解决方案来解决这个问题 var prevGroup, $group = $(); $.each(data, function (index, value) { var group = value.nested; if (group != prevGroup) { $group = $('<optgrou
var prevGroup, $group = $();
$.each(data, function (index, value) {
var group = value.nested;
if (group != prevGroup) {
$group = $('<optgroup />', {label: group}).appendTo('#select');
}
if (value.selected !== "") {
$group.append($('<option />', {
text: value.text,
value: value.value,
selected: value.selected,
}));
} else {
$group.append($('<option />', {
text: value.text,
value: value.value
}));
}
prevGroup = group;
});
var prevGroup,$group=$();
$.each(数据、函数(索引、值){
var group=value.nested;
如果(组!=prevGroup){
$group=$('',{label:group}).appendTo('#select');
}
如果(value.selected!==“”){
$group.append($(''){
text:value.text,
value:value.value,
选中:value.selected,
}));
}否则{
$group.append($(''){
text:value.text,
value:value.value
}));
}
prevGroup=组;
});
每个都尝试一下,看看它是否是JQuery
each=function(a,b,c){if("function"==typeof b)for(var d=0;d<a.length;d++)b(d,a[d]);else for(var d=0;d<a.length;d++)typeof a[d]==b&&c(d,a[d])};
解决方案:不要循环超过4000条记录。认真地寻找一种更好的模式来检索数据,例如分页,以分割检索到的数据。因此,在标记中添加4k标记,这对于DOM来说是一顿丰盛的早餐。对于批量数据循环,最好使用
for loop
而不是$。each()
,此外,您还应该一次以少量分页方式提取数据。select中的4000个选项会提供较差的用户体验。为什么不改用自动完成验证呢?或者提供一个选择器来选择Rory建议的分页数据。可能会加快速度:不要在每次迭代($(“”)
)中构建jquery对象,而是连接一个js字符串(“…”
)和之后。每个都将其附加到dom中。$(“”)
等的每次调用都很慢。
each(array,function(index,value){
});