Ich versuche, die Reihenfolge der ausgewählten Elemente in Select2
basierend auf einem Array festzulegen.Reihenfolge der Select2-Auswahl basierend auf Array von Elementen
Eine einfache Lösung ist bereits vorgeschlagen worden Elemente in der Reihenfolge anzuhängen, mit denen sie im Dropdown-Menü angeklickt werden (siehe 2rba Antwort auf 2017.10.26 in diesem discussion):
$("#selectCriteria").on("select2:select", function (evt) {
var element = evt.params.data.element;
var $element = $(element);
$element.detach();
$(this).append($element);
$(this).trigger("change");
});
Was ich Ich versuche, dieses Verhalten zu imitieren, aber wenn ich ein Array der ausgewählten Elemente übergebe, anstatt sie manuell in der Liste anzuklicken. Ich habe den folgenden Befehl versucht:
displayed_items = ["b", "c", "a"];
$('#selectCriteria').val(displayed_items).trigger('change');
Aber die Reihenfolge ist nicht erhalten. Ich habe versucht, den Befehl mit einem Element zu einem Zeitpunkt, Looping, aber jeder neue Aufruf überschreibt das vorherige Element:
$('#selectCriteria').val("b").trigger('change');
$('#selectCriteria').val("c").trigger('change');
$('#selectCriteria').val("a").trigger('change');
Ich sehe zwei mögliche Lösungen für diese, aber es fehlt die Hintergrund sie arbeiten zu lassen:
- Wie sollte die obige Iteration angepasst werden an nicht den zuvor hinzugefügten Wert überschreiben?
- Wie konnte ich den Ansatz übernehmen in diesem gezeigt fiddle (von vol7ron der posts on github), die ziemlich tut viel, was ich frage (das heißt Makeln/Ausschalten des
.data('preserved-order',selected)
)? Da esJSX
verwendet, bin ich nicht sicher, wie ich dieses Skript in meinem einfachen JS/jQuery-Skript wiederverwenden könnte.
Dank, scheint dies jedoch eher wie eine Neuimplementierung des ersten Schnipsel in meiner Frage. Soll Ihre Version auch funktionieren, wenn Sie ein Array mit z. der Befehl '$ ('# select'). val (myArray) .trigger ('change');'? Das versuche ich zu erreichen. Können Sie in Ihrem Beispiel veranschaulichen, wie Sie dies unter Verwendung einer vorbestimmten Anordnung, z. '[" b "," a "," d "]'? – sc28
Aha. Entschuldigung, ich habe es falsch gelesen. Gib mir eine Minute hier und ich werde die Antwort aktualisieren. – classicalConditioning
aktualisiert die Antwort – classicalConditioning