Certo - fanno options
un array di stringhe e utilizzare .join('')
piuttosto che +=
ogni volta attraverso il ciclo. Lieve prestazioni urto quando si tratta di un gran numero di opzioni ...
var options = [];
$.getJSON("/Admin/GetFolderList/", function(result) {
for (var i = 0; i < result.length; i++) {
options.push('<option value="',
result[i].ImageFolderID, '">',
result[i].Name, '</option>');
}
$("#theSelect").html(options.join(''));
});
Sì. Sto ancora lavorando con le stringhe per tutto il tempo. Che ci crediate o no, questo è il modo più veloce per costruire un frammento DOM ... Ora, se avete solo un paio di opzioni, esso non importa - utilizzare la tecnica Dreas demonstrates se vi piace lo stile. Ma tenere a mente, si sta invocando parser HTML interno del browser i*2
volte, piuttosto che solo una volta, e la modifica del DOM ogni volta attraverso il ciclo ... con un numero sufficiente di opzioni. finirai per pagarlo, specialmente sui browser più vecchi.
Nota: Come il giudice sottolinea, questo cadrà a pezzi se ImageFolderID
e Name
non sono encoded properly ...
Storia antica qui lo so, ma per i googler come me che sono appena incappato in questo momento, non sarebbe ancora più veloce se clonasse un elemento '' invece di crearne uno? – tedders
Io non la penso così ... in ogni caso sta per creare un'istanza di un nuovo oggetto. – quillbreaker
Bello! Anche se penso che l'esempio potrebbe essere più chiaro se l'elemento è stato chiamato "#dropdown" o giù di lì, dal momento che riflette meglio l'elemento genitore effettivo delle opzioni. – Anders