Comparaison de 2 codes et résultat
$.each(sites,function(key, value) { if( (type_station!='' && value.label_type==type_station) || type_station==''){ if(groupBy != value.id.substr(0,4)){ if(groupBy != null) $select.append('</optgroup>'); $select.append('<optgroup label="' + value.id.substr(0,4) + '">'); } groupBy = value.id.substr(0,4); var selected = selected_sites.indexOf(value.id) > -1 ? ' selected' : ''; $select.append('<option value="' + value.id + '"' + selected + '>' + value.id + ' / ' + value.label + ' / ' + value.label_type + '</option>'); } });
var output = ''; $.each(sites,function(key, value) { if( (type_station!='' && value.label_type==type_station) || type_station==''){ if(groupBy != value.id.substr(0,4)){ if(groupBy != null) output += '</optgroup>'; output += '<optgroup label="' + value.id.substr(0,4) + '">'; } groupBy = value.id.substr(0,4); var selected = selected_sites.indexOf(value.id) > -1 ? ' selected' : ''; output += '<option value="' + value.id + '"' + selected + '>' + value.id + ' / ' + value.label + ' / ' + value.label_type + '</option>'; } }); $select.append(output);
En stockant le contenu HTML dans une variable puis en utilisant append une fois uniquement à la fin, on obtient un temps d’exécution de 22,67ms au lieu de 1,59s !