Подскажите, как можно оптимизировать код по загрузке ~5000 итемов?
Есть код:
console.time('create list');
var ch = '';
$.each(json.hotels, function(i) {
// Если итем присутствует в GET запросе.
if (qs && typeof qs.hotelId !=='undefined') {
ch = (qs.hotelId.length > 0 && $.inArray(json.hotels[i].id_extra, qs.hotelId) >= 0) ? true : false;
} else ch = false;
$("#st-all-hotels-list .st-listbox-content").append(checkableItem({
text: json.hotels[i].type + " " + json.hotels[i].name,
value: json.hotels[i].id_extra,
pans: json.hotels[i].pans_id,
star: json.hotels[i].star,
foh: true,
fohid: json.hotels[i].regionid,
ch: ch,
visible: true,
id: json.hotels[i].id,
}));
if (qs && typeof qs.hotelId !== 'undefined') {
//alert(qs.hotelId.length +' : '+ json.hotels[i].id_extra +' : '+ qs.hotelId);
if (qs.hotelId.length > 0 && $.inArray(json.hotels[i].id_extra, qs.hotelId) >= 0) {
$("#st-selected-hotels-list .st-listbox-content").append(clickableItem({
text: json.hotels[i].name,
value: json.hotels[i].id_extra
}));
}
}
});
console.timeEnd('create list');
function checkableItem(config) {
var el = $('<div class="st-checkable-item" unselectable="on"><input type="checkbox" /><label unselectable="on"><span>' + config.text + '</span></label></div>')
.mouseenter(function() {
$(this).addClass('st-highlight');
})
.mouseleave(function() {
$(this).removeClass('st-highlight');
});
var i = el.children('input');
if (config.value !== undefined)
i.val(config.value);
i.attr('id','item_'+config.value);
el.find('label').attr('for','item_'+config.value);
if (config.pans)
el.attr("pans", config.pans);
if (config.star)
el.attr('star', config.star);
if (config.altValue)
i.attr("data-altvalue", config.altValue);
if (config.foh)
el.attr('value', config.fohid);
if (config.visible == false) {
el.attr('style', 'display:none;');
}
if (config.ch) {
el.addClass('st-checked');
i.attr('checked', 'checked');
}
el.attr('my_type',config.visible);
return el;
}
В итоге у меня формируется список из кликабельных отелей. Данные берутся из JSON файла. Но по времени это всё занимает полторы минуты. Что можно оптимизировать или переделать в коде чтобы побыстрее грузилось? Смотрел
статью, но мало что подходит для конкретной ситуации.
PS: Пока идет загрузка, пользователю крутится loader. Но как только весь этот список итемов вываливается в DIV, loader останавливается, но не убирается. Висит все эти полторы секунды, потом пропадает. Хочется сократить это время.