Das Beispiel, das ich ständig gepostet sehe, scheint nicht optimal zu sein, da es das Verketten von Zeichenfolgen beinhaltet, was also nicht jQuery zu sein scheint. Es sieht normalerweise so aus:
$.getJSON("/Admin/GetFolderList/", function(result) {
for (var i = 0; i < result.length; i++) {
options += '<option value="' + result[i].ImageFolderID + '">' + result[i].Name + '</option>';
}
});
Gibt es einen besseren Weg?
<option/>
Element klonen würden , anstatt jedes zu erstellen?Was ich oben mache, ist ein neues
<option>
Element zu erstellen und es deroptions
Liste hinzuzufügen (vorausgesetzt, esoptions
ist die ID eines Dropdown-Elements.PS Mein Javascript ist etwas verrostet, daher ist die Syntax möglicherweise nicht perfekt
quelle
Sicher - machen Sie
options
eine Reihe von Zeichenfolgen und verwenden Sie.join('')
sie nicht+=
jedes Mal durch die Schleife. Leichte Leistungseinbußen beim Umgang mit einer Vielzahl von Optionen ...Ja. Ich arbeite immer noch die ganze Zeit mit Streichern. Ob Sie es glauben oder nicht, das ist der schnellste Weg, um ein DOM-Fragment zu erstellen ... Wenn Sie nur wenige Optionen haben, spielt es keine Rolle - verwenden Sie die Technik, die Dreas demonstriert, wenn Sie den Stil mögen. Beachten Sie jedoch, dass Sie die internen HTML-Parserzeiten des Browsers
i*2
nicht nur einmal aufrufen und das DOM jedes Mal durch die Schleife ändern ... mit einer ausreichenden Anzahl von Optionen. Sie werden am Ende dafür bezahlen, besonders bei älteren Browsern.Hinweis: Wie Richter weist darauf hin, diese auseinander fallen , wenn
ImageFolderID
undName
sind nicht richtig codiert ...quelle
result[i].ImageFolderID
undresult[i].Name
als HTML-Attributwert bzw. HTML-Text codieren . Ich würde nicht annehmen, dass sie vom vorcodierten Server stammen, da ich annehmen würde, dass der Server json zurückgibt, nicht bastardisiertes json.join
in praktisch jedem Browser.Oder vielleicht:
quelle
Der schnellste Weg ist folgender:
Laut diesem Link ist dies der schnellste Weg, da Sie bei jeder Art von DOM-Einfügung alles in ein einziges Element einschließen.
quelle
Ich fand, dass dies von jquery site funktioniert
quelle
Ich habe gelesen, dass die Verwendung von Dokumentfragmenten performant ist, da sie den Seitenrückfluss bei jedem Einfügen eines DOM-Elements vermeidet und auch von allen Browsern (sogar IE 6) gut unterstützt wird.
Ich habe dies zum ersten Mal im JavaScript Best Practices-Kurs von CodeSchool gelesen .
Hier ist ein Vergleich verschiedener Ansätze , danke an den Autor.
quelle
result.forEach(function(el){var option=document.createElement('option').option.textContent=el.name;option.value=el.ImageFolderID);fragment.appendChild(el);
Anderer Ansatz mit ES6
quelle
Ich benutze das Selectboxes JQuery Plugin. Es macht Ihr Beispiel zu:
quelle
quelle
Ich hoffe, es hilft. Normalerweise benutze ich Funktionen, anstatt jedes Mal den gesamten Code zu schreiben.
quelle
quelle
Hier ist ein Beispiel, das ich bei einer Änderung gemacht habe. Ich bekomme Kinder der ersten Auswahl in der zweiten Auswahl
});
enter code here
quelle
Ich habe jQuery verwendet und eine Funktion aufgerufen, um Dropdowns zu füllen.
quelle
quelle
Unten finden Sie die Jquery-Methode zum Auffüllen einer Dropdown-Liste mit der ID "FolderListDropDown".
quelle