El ejemplo que veo publicado todo el tiempo parece subóptimo, porque involucra cadenas de concatenación, lo que parece no ser jQuery. Suele verse así:
$.getJSON("/Admin/GetFolderList/", function(result) {
for (var i = 0; i < result.length; i++) {
options += '<option value="' + result[i].ImageFolderID + '">' + result[i].Name + '</option>';
}
});
¿Hay una mejor manera?
<option/>
elemento en lugar de crear cada uno?Lo que estoy haciendo arriba es crear un nuevo
<option>
elemento y agregarlo a laoptions
lista (suponiendo queoptions
sea la ID de un elemento desplegable.PD: mi javascript está un poco oxidado, por lo que la sintaxis puede no ser perfecta
fuente
Claro: haga
options
una serie de cadenas y utilícelas en.join('')
lugar de hacerlo+=
cada vez por el ciclo. Ligero aumento de rendimiento cuando se trata con un gran número de opciones ...Si. Todavía estoy trabajando con cuerdas todo el tiempo. Lo creas o no, esa es la forma más rápida de construir un fragmento DOM ... Ahora, si solo tienes unas pocas opciones, realmente no importará: usa la técnica que Dreas demuestra si te gusta el estilo. Pero tenga en cuenta que está invocando los
i*2
tiempos del analizador HTML interno del navegador , en lugar de solo una vez, y modificando el DOM cada vez a través del ciclo ... con una cantidad suficiente de opciones. terminarás pagándolo, especialmente en navegadores antiguos.Nota: Como el juez señala, esto se vendrá abajo si
ImageFolderID
yName
no están codificados adecuadamente ...fuente
result[i].ImageFolderID
yresult[i].Name
como html-attribute-value y html-text respectivamente. No asumiría que provienen del servidor precodificado, ya que supondría que el servidor devuelve json, no jtard bastardo.join
en prácticamente todos los navegadores.O tal vez:
fuente
La forma más rápida es esta:
De acuerdo con este enlace, es la forma más rápida porque envuelve todo en un solo elemento al hacer cualquier tipo de inserción DOM.
fuente
Encontré que esto funciona desde el sitio jquery
fuente
He leído que el uso de fragmentos de documentos es eficaz porque evita el reflujo de página en cada inserción de elemento DOM, también es compatible con todos los navegadores (incluso IE 6).
Leí por primera vez sobre esto en el curso de prácticas recomendadas de JavaScript de CodeSchool .
Aquí hay una comparación de diferentes enfoques , gracias al autor.
fuente
result.forEach(function(el){var option=document.createElement('option').option.textContent=el.name;option.value=el.ImageFolderID);fragment.appendChild(el);
Otro enfoque con ES6
fuente
Yo uso el plugin selectboxes jquery. Convierte tu ejemplo en:
fuente
fuente
Espero que ayude. Usualmente uso funciones en lugar de escribir todo el código cada vez.
fuente
fuente
aquí hay un ejemplo que hice al cambiar obtengo hijos de la primera selección en la segunda selección
});
enter code here
fuente
He estado usando jQuery y llamando a una función para completar los menús desplegables.
fuente
fuente
A continuación se muestra la forma de Jquery de llenar una lista desplegable cuyo ID es "FolderListDropDown"
fuente