Für select2 Version> = 4.0.0
Die anderen Lösungen funktionieren möglicherweise nicht, die folgenden Beispiele sollten jedoch funktionieren.
Lösung 1: Löst alle angehängten Änderungsereignisse aus, einschließlich select2
$('select').val('1').trigger('change');
Lösung 2: Löst das Ereignis JUST select2 change aus
$('select').val('1').trigger('change.select2');
Beispiele hierfür finden Sie in dieser jsfiddle . Vielen Dank an @minlare für Lösung 2.
Erläuterung:
Angenommen, ich habe einen besten Freund mit den Namen der Leute ausgewählt. Also Bob, Bill und John (in diesem Beispiel gehe ich davon aus, dass der Wert mit dem Namen identisch ist). Zuerst initialisiere ich select2 auf meinem select:
$('#my-best-friend').select2();
Jetzt wähle ich Bob manuell im Browser aus. Als nächstes macht Bob etwas Unartiges und ich mag ihn nicht mehr. Das System hebt Bob für mich auf:
$('#my-best-friend').val('').trigger('change');
Oder sagen Sie, ich lasse das System anstelle von Bob das nächste in der Liste auswählen:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Hinweise zur Select 2-Website (siehe Veraltete und entfernte Methoden ), die für andere nützlich sein können:
.select2 ('val')
Die "val" -Methode ist veraltet und wird in Select2 4.1 entfernt. Die veraltete Methode enthält den Parameter triggerChange nicht mehr.
Sie sollten stattdessen direkt .val für das zugrunde liegende Element aufrufen. Wenn Sie den zweiten Parameter (triggerChange) benötigen, sollten Sie auch .trigger ("change") für das Element aufrufen.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');