L'exemple que je vois publié tout le temps semble être sous-optimal, car il implique la concaténation de chaînes, ce qui ne semble donc pas jQuery. Cela ressemble généralement à ceci:
$.getJSON("/Admin/GetFolderList/", function(result) {
for (var i = 0; i < result.length; i++) {
options += '<option value="' + result[i].ImageFolderID + '">' + result[i].Name + '</option>';
}
});
Y a-t-il une meilleure façon?
<option/>
élément au lieu de créer chacun?Ce que je fais ci-dessus est de créer un nouvel
<option>
élément et de l'ajouter à laoptions
liste (en supposant queoptions
l'ID d'un élément déroulant.PS Mon javascript est un peu rouillé donc la syntaxe n'est peut-être pas parfaite
la source
Bien sûr - créez
options
un tableau de chaînes et utilisez.join('')
plutôt que+=
chaque fois dans la boucle. Légère augmentation des performances lors du traitement d'un grand nombre d'options ...Oui. Je travaille toujours avec des cordes tout le temps. Croyez-le ou non, c'est le moyen le plus rapide de créer un fragment DOM ... Maintenant, si vous n'avez que quelques options, cela n'aura pas vraiment d'importance - utilisez la technique démontrée par Dreas si vous aimez le style. Mais gardez à l'esprit que vous invoquez les
i*2
heures de l' analyseur HTML interne du navigateur , plutôt qu'une seule fois, et modifiez le DOM à chaque fois dans la boucle ... avec un nombre suffisant d'options. vous finirez par payer pour cela, en particulier sur les anciens navigateurs.Remarque: Comme le souligne Justice, cela s'effondrera si
ImageFolderID
etName
n'est pas codé correctement ...la source
result[i].ImageFolderID
et enresult[i].Name
tant que valeur d'attribut html et texte html. Je ne suppose pas qu'ils proviennent du serveur pré-encodé, car je suppose que le serveur retourne json, pas json bâtard.join
dans pratiquement tous les navigateurs.Ou peut-être:
la source
Le moyen le plus rapide est le suivant:
Selon ce lien, c'est le moyen le plus rapide car vous enveloppez tout dans un seul élément lorsque vous effectuez tout type d'insertion DOM.
la source
J'ai trouvé que cela fonctionnait à partir du site jquery
la source
J'ai lu que l'utilisation de fragments de document est performante car elle évite la redistribution des pages à chaque insertion d'élément DOM, elle est également bien prise en charge par tous les navigateurs (même IE 6).
J'ai d'abord lu à ce sujet dans le cours sur les meilleures pratiques JavaScript de CodeSchool .
Voici une comparaison des différentes approches , merci à l'auteur.
la source
result.forEach(function(el){var option=document.createElement('option').option.textContent=el.name;option.value=el.ImageFolderID);fragment.appendChild(el);
Autre approche avec ES6
la source
J'utilise le plugin selectboxes jquery. Cela transforme votre exemple en:
la source
la source
J'espère que ça aide. J'utilise généralement des fonctions à la place, j'écris tout le code à chaque fois.
la source
la source
voici un exemple que j'ai fait sur le changement que je reçois des enfants de la première sélection en deuxième sélection
});
enter code here
la source
J'utilise jQuery et appelle une fonction pour remplir les listes déroulantes.
la source
la source
Vous trouverez ci-dessous la manière Jquery de remplir une liste déroulante dont l'ID est "FolderListDropDown"
la source