Пример, который я вижу размещенный все время, кажется неоптимальным, потому что он включает в себя конкатенацию строк, что, похоже, не является jQuery. Обычно это выглядит так:
$.getJSON("/Admin/GetFolderList/", function(result) {
for (var i = 0; i < result.length; i++) {
options += '<option value="' + result[i].ImageFolderID + '">' + result[i].Name + '</option>';
}
});
Есть ли способ лучше?
<option/>
элемент вместо того, чтобы создавать каждый?То, что я делаю выше, это создание нового
<option>
элемента и добавление его вoptions
список (при условии, чтоoptions
это идентификатор выпадающего элемента.PS Мой JavaScript немного ржавый, поэтому синтаксис может быть не идеальным
источник
Конечно - создайте
options
массив строк и используйте его.join('')
вместо+=
каждого цикла. Небольшое снижение производительности при работе с большим количеством опций ...Да. Я все еще работаю со строками все время. Верьте или нет, это самый быстрый способ создания фрагмента DOM ... Теперь, если у вас есть только несколько вариантов, это не будет иметь большого значения - используйте технику, которую демонстрирует Dreas, если вам нравится стиль. Но имейте в виду, что вы вызываете внутреннее время HTML-анализатора браузера
i*2
, а не один раз, и модифицируете DOM каждый раз в цикле ... с достаточным количеством опций. Вы будете платить за это, особенно в старых браузерах.Примечание: как указывает Правосудие, это развалится, если
ImageFolderID
иName
не будет правильно закодировано ...источник
result[i].ImageFolderID
иresult[i].Name
как html-attribute-value и html-text соответственно. Я не предполагаю, что они приходят с предварительно закодированного сервера, так как я предполагаю, что сервер возвращает json, а не убитый json.join
практически во всех браузерах.Или, может быть:
источник
Самый быстрый способ это:
Согласно этой ссылке, это самый быстрый способ, потому что вы заключаете все в один элемент при выполнении любого вида вставки DOM.
источник
Я обнаружил, что это работает с сайта JQuery
источник
Я читал, что использование фрагментов документа является эффективным, поскольку он позволяет избежать переформатирования страниц при каждой вставке элемента DOM, он также хорошо поддерживается всеми браузерами (даже IE 6).
Я впервые прочитал об этом в курсе JavaScript Best Practices CodeSchool .
Вот сравнение разных подходов , спасибо автору.
источник
result.forEach(function(el){var option=document.createElement('option').option.textContent=el.name;option.value=el.ImageFolderID);fragment.appendChild(el);
Другой подход с ES6
источник
Я использую плагин selectboxes jquery. Это превращает ваш пример в:
источник
источник
Я надеюсь, что это помогает. Я обычно использую функции вместо того, чтобы писать весь код каждый раз.
источник
источник
Вот пример, который я сделал на изменения, я получаю детей первого выбора во втором выборе
});
enter code here
источник
Я использую jQuery и вызываю функцию для заполнения выпадающих списков.
источник
источник
Ниже представлен способ Jquery для заполнения раскрывающегося списка с идентификатором «FolderListDropDown».
источник