O exemplo que vejo postado o tempo todo parece subótimo, porque envolve concatenar seqüências de caracteres, o que parece não ser o jQuery. Geralmente é assim:
$.getJSON("/Admin/GetFolderList/", function(result) {
for (var i = 0; i < result.length; i++) {
options += '<option value="' + result[i].ImageFolderID + '">' + result[i].Name + '</option>';
}
});
Existe uma maneira melhor?
<option/>
elemento em vez de criar cada um?O que estou fazendo acima é criar um novo
<option>
elemento e adicioná-lo àoptions
lista (supondo queoptions
seja o ID de um elemento suspenso.PS Meu javascript está um pouco enferrujado, portanto a sintaxe pode não ser perfeita
fonte
Claro - crie
options
uma série de strings e use, em.join('')
vez de+=
todas as vezes, o loop. Leve aumento no desempenho ao lidar com um grande número de opções ...Sim. Eu ainda estou trabalhando com cordas o tempo todo. Acredite ou não, essa é a maneira mais rápida de criar um fragmento DOM ... Agora, se você tiver apenas algumas opções, isso realmente não importa - use a técnica que Dreas demonstra se você gosta do estilo. Mas lembre-se de que você está invocando os
i*2
tempos internos do analisador de HTML do navegador , em vez de apenas uma vez, e modificando o DOM toda vez através do loop ... com um número suficiente de opções. você acabará pagando por isso, principalmente em navegadores mais antigos.Nota: Como o juiz aponta, isso vai desmoronar se
ImageFolderID
eName
não são codificados corretamente ...fonte
result[i].ImageFolderID
eresult[i].Name
como html-attribute-value e html-text respectivamente. Eu não assumiria que eles vêm do servidor pré-codificado, pois eu assumiria que o servidor retorna json, não bastardized json.join
em praticamente todos os navegadores.Ou talvez:
fonte
A maneira mais rápida é esta:
De acordo com este link, é o caminho mais rápido, porque você agrupa tudo em um único elemento ao fazer qualquer tipo de inserção DOM.
fonte
Eu achei que isso estava funcionando no site jquery
fonte
Eu li que o uso de fragmentos de documentos é de alto desempenho, pois evita o refluxo da página a cada inserção do elemento DOM, também é bem suportado por todos os navegadores (até o IE 6).
Li pela primeira vez sobre isso no curso de práticas recomendadas de JavaScript da CodeSchool .
Aqui está uma comparação de diferentes abordagens , graças ao autor.
fonte
result.forEach(function(el){var option=document.createElement('option').option.textContent=el.name;option.value=el.ImageFolderID);fragment.appendChild(el);
Outra abordagem com o ES6
fonte
Eu uso o plugin jquery selectboxes . Transforma o seu exemplo em:
fonte
fonte
Espero que ajude. Eu costumo usar funções, em vez disso, escrevo todo o código sempre.
fonte
fonte
aqui está um exemplo que eu fiz na mudança eu recebo filhos do primeiro select no segundo select
});
enter code here
fonte
Eu tenho usado jQuery e chamando uma função para preencher drop downs.
fonte
fonte
Abaixo está a maneira Jquery de preencher uma lista suspensa cujo ID é "FolderListDropDown"
fonte