Przykład, który widzę cały czas publikowany, wydaje się być nieoptymalny, ponieważ obejmuje konkatenację łańcuchów, co wydaje się tak nie jQuery. Zwykle wygląda to tak:
$.getJSON("/Admin/GetFolderList/", function(result) {
for (var i = 0; i < result.length; i++) {
options += '<option value="' + result[i].ImageFolderID + '">' + result[i].Name + '</option>';
}
});
Czy jest lepszy sposób?
<option/>
element zamiast go tworzyć?To, co robię powyżej, polega na utworzeniu nowego
<option>
elementu i dodaniu go dooptions
listy (zakładając, żeoptions
jest to identyfikator elementu rozwijanego).PS Mój javascript jest trochę zardzewiały, więc składnia może nie być idealna
źródło
Jasne - stwórz
options
tablicę ciągów znaków i używaj.join('')
zamiast za+=
każdym razem pętli. Nieznaczny wzrost wydajności w przypadku dużej liczby opcji ...Tak. Cały czas pracuję z ciągami. Wierzcie lub nie, to najszybszy sposób na zbudowanie fragmentu DOM ... Teraz, jeśli masz tylko kilka opcji, to nie będzie miało znaczenia - skorzystaj z techniki, którą demonstruje Dreas, jeśli lubisz styl. Ale pamiętaj, że wywołujesz wewnętrzny parser HTML HTML przeglądarki
i*2
, a nie tylko raz, i modyfikujesz DOM za każdym razem przez pętlę ... z wystarczającą liczbą opcji. zapłacisz za to, zwłaszcza w starszych przeglądarkach.Uwaga: Jako Sprawiedliwość zwraca uwagę, to rozpadnie, jeśli
ImageFolderID
iName
nie są odpowiednio zakodowane ...źródło
result[i].ImageFolderID
iresult[i].Name
jako html atrybut-wartość i html tekstu odpowiednio. Nie zakładałbym, że pochodzą one z serwera wstępnie zakodowanego, ponieważ zakładam, że serwer zwraca json, a nie drań.join
w praktycznie każdej przeglądarce.Albo może:
źródło
Najszybszy sposób to:
Zgodnie z tym linkiem jest to najszybszy sposób, ponieważ podczas wykonywania wstawiania DOM wszystko jest zawijane w jednym elemencie.
źródło
Przekonałem się, że to działa z witryny jquery
źródło
Czytałem, że używanie fragmentów dokumentów jest wydajne, ponieważ pozwala uniknąć ponownego wczytywania strony po każdym wstawieniu elementu DOM, jest również dobrze obsługiwane przez wszystkie przeglądarki (nawet IE 6).
Najpierw przeczytałem o tym na kursie najlepszych praktyk JavaScript w CodeSchool .
Oto porównanie różnych podejść , dziękuję autorowi.
źródło
result.forEach(function(el){var option=document.createElement('option').option.textContent=el.name;option.value=el.ImageFolderID);fragment.appendChild(el);
Inne podejście z ES6
źródło
Korzystam z wtyczki jquery selectbox . Zmienia Twój przykład w:
źródło
źródło
Mam nadzieję, że to pomoże. Zwykle używam funkcji zamiast pisać cały kod za każdym razem.
źródło
źródło
oto przykład, który zrobiłem przy zmianie. Mam dzieci pierwszego wyboru w drugim wyborze
});
enter code here
źródło
Korzystam z jQuery i wywołuję funkcję, aby wypełnić listy rozwijane.
źródło
źródło
Poniżej znajduje się sposób Jquery wypełniania listy rozwijanej, której id to „FolderListDropDown”
źródło